【发布时间】:2009-11-06 09:17:02
【问题描述】:
我目前正在兜圈子,试图找到正确的模式,以便将依赖注入与多个 IEnumerables 一起使用。
我想从我的数据库中返回三种类型的对象:项目、批次和任务。我想创建一个具有以下形式的存储库:
public interface IRepository<T>
{
IEnumerable<T> GetAll();
IEnumerable<T> GetAllActive();
IEnumerable<T> GetItemsByUserName(string UserName);
T GetItemById(int ID);
}
所以当我创建一个 ProjectRepository 的具体实现时,它将如下所示:
IEnumerable<Project> GetAll();
IEnumerable<Project> GetAllActive();
IEnumerable<Project> GetItemsByUserName(string UserName);
Project GetItemById(int ID);
对于任务也是如此:
IEnumerable<Task> GetAll();
IEnumerable<Task> GetAllActive();
IEnumerable<Task> GetItemsByUserName(string UserName);
Task GetItemById(int ID);
我的困难在于尝试在我的调用代码中声明一个 IRepository。当我声明引用时,我发现自己需要声明一个类型:
private IRepository<Project> Repository;
...这当然是没有意义的。我在某个地方出错了,但目前无法理解。如何使用依赖注入来声明一个使用所有三种具体类型的接口?
希望我已经正确解释了自己。
【问题讨论】:
标签: design-patterns generics collections dependency-injection