为多个域实现IRepository

时间:2013-11-15 08:56:41

标签: c# asp.net-mvc oop interface

我已经为多个域实现了IRepository接口,但我不知道如何调用特定的方法。

以下是代码:

public interface IRepository<T> where T : class
{
    IEnumerable<T> GetAll();
    void Add(T entity);
    void Update(T entity);
}


public interface IProjectRepository : IRepository<ProjectType>, IRepository<Project>, IRepository<ProjectDetail>
{
}

public class ProjectRepository : IProjectRepository
{
// implemenation

}

现在,当我创建ProjectRepository类的对象时,它显示了接口的所有方法,但只期望projecttype参数。

我不知道,这是正确的实施方式吗?还是有另一种方法来实现类似的东西吗?

2 个答案:

答案 0 :(得分:4)

通用存储库IRepository<T>不是IMO的好解决方案,请看http://www.sapiensworks.com/blog/post/2012/03/05/The-Generic-Repository-Is-An-Anti-Pattern.aspx

我认为最好在没有通用参数和常用方法的情况下单独指定每个存储库(您确定在所有存储库中始终需要AddUpdateGetAll吗?)

答案 1 :(得分:0)