【发布时间】:2011-08-11 20:59:14
【问题描述】:
假设我有 3 个项目: 1 项目是 .NET MVC3 中的 Web 项目 1 项目是应用程序的业务逻辑。从 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 类时,Web 项目中没有 GetEntityById 方法,尽管它正在被引用。然后,如果我将 MyTools 项目中的所有逻辑都移到业务逻辑中而不进行任何更改,则 GetEntityById 将可用。我无法理解这个问题发生了什么。访问修饰符有什么问题吗?据我所知,将一个类设置为 public,甚至可以从不同的程序集访问该类。
谢谢
【问题讨论】:
-
我只是把这段代码放在不同的项目中,并且可以从
ClientAO类访问GetEntityById()。您的两个项目是否都针对相同版本的 .NET 框架?您是否遇到构建错误或运行时异常? -
您是否为业务逻辑项目添加了正确的引用?
-
这很奇怪 - 逻辑上它应该可以工作 - 不知道该怎么做。
-
如果您创建 2 个新项目并将上面的代码复制/粘贴到各自的项目中,它会构建吗?它应该,这意味着您的问题可能不在于您发布的代码。
-
问题已解决。 m4tt1mus 所说的我的错误 - 参考问题 - 这就是导致问题的原因。
标签: c# .net asp.net-mvc oop design-patterns