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

问题描述 投票:0回答:2

假设我有 3 个项目:

  1. .NET MVC3 中的 Web 项目
  2. 应用程序的业务逻辑。从 Web 项目引用它的地方。
  3. 外部项目 (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 项目中不可用。然后,如果我将 MyTools 项目中的所有逻辑移至业务逻辑中而不进行任何更改,则 GetEntityById 将可用。我无法理解这个问题发生了什么。访问修饰符有问题吗?据我所知,将一个类设置为公共,甚至可以从不同的程序集访问该类。

c# .net asp.net-mvc oop design-patterns
2个回答
1
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.