使用.NET中另一个程序集的抽象类

时间:2011-08-11 20:59:15

标签: c# .net asp.net-mvc oop design-patterns

假设我有3个项目: 1项目是.NET MVC3中的Web项目 1项目是应用程序的Buisness Logic。它从Web项目中引用的位置。 1个外部项目(MyTools),它具有一些通用功能,如log4Net,nHibernate实现。

我的目标是在商务逻辑中实现MyTools项目中的特定抽象类。

public class Client : IEntity //Project Location: Buisness Logic Project
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ClientAO : BaseDAO<Client> //Project Location: Buisness Logic Project
{

}

public interface IEntity //Project Location: MyTools Logic Project
{
    int Id { get; set; }
}

public abstract class BaseDAO<TEntity> where TEntity : IEntity, new() //Project      Location: MyTools Logic Project
{
    public static TEntity GetEntityById(int Id)
    {
        //Logic here to get object with ID = id
    }
}

问题在于:当我尝试使用ClientAO类时,虽然引用了GetEntityById方法,但Web项目中不提供GetEntityById方法。然后,如果我将MyTools项目中的所有逻辑移动到商务逻辑中而不更改任何内容,则GetEntityById将可用。我无法理解这个问题正在发生什么。访问修饰符有什么问题吗?据我所知,将类设置为public,即使从不同的程序集中也可以访问该类。

由于

2 个答案:

答案 0 :(得分:1)

如果正确的引用添加到您的业务逻辑项目中,这应该可以。

答案 1 :(得分:0)

GetEntityById是一个静态方法。也许你第一次尝试使用该方法的ClientDAO实例,以及第二次尝试使用该类?

无论如何,为什么那个方法是静态的?