我经常使用类似于下面的代码,这将导致Visual Studio中的循环引用:
(这两个名称空间存在于不同的程序集中)
namespace Data
{
public class DataContext : IDataContext
{
public IEnumerable<Person> GetAllPeople()
{
// Get all people here
}
}
}
namespace Interfaces
{
public interface IDataContext
{
IEnumerable<Person> GetAllPeople();
}
}
接口(IDataContext)和它的实现(DataContext)都依赖于名为Person
的模型。
为了避免循环引用(Visual Studio不允许),我认为有两个选择:
将模型移动到单独的Models
程序集中,并将其添加为对Interfaces
和Data
程序集的引用。
让Person
模型实现一个接口(例如IPerson
),该接口将存在于Interfaces
程序集中,并使用它代替Person
in界面和它的实现。
单独的程序集包含一些小模型似乎很浪费,为仅包含属性的模型创建接口也是如此。
最广为接受的方式是什么?
答案 0 :(得分:1)
这两个选项都非常好,选择一个取决于您的偏好:
答案 1 :(得分:0)
为模型制作一个程序集,为服务接口制作另一个程序集,为服务实现制作另一个程序集。
模型类应该只依赖于其他模型类。服务接口可能依赖于模型类。服务实现可能取决于任何事情。
答案 2 :(得分:0)
作为一种技巧,模型程序集不应包含对项目中任何其他程序集的引用。 模型必须完全独立。
在模型程序集中创建所有类及其接口。 然后将实现放在另一个程序集上。