【发布时间】:2013-01-16 18:54:55
【问题描述】:
我正在尝试使用以下通用存储库接口进行 DI 和构造函数注入:
public interface IRepository<TEntity> : IDisposable where TEntity : class
问题是为了定义接口的实例,我必须提供这样的类类型:
private IRepository<Person> _personRepository;
问题是如果我使用 DI(并且我使用 Unity for IoC 框架),那么我必须在构造函数中定义多个实例以获取我需要使用的所有存储库接口,如下所示:
public MyClass(IRepository<Person> personRepository,
IRepository<Orders> ordersRepository,
IRepository<Items> itemsRepository,
IRepository<Locations> locationsRepository)
{
_personRepository = personRepository;
_OrdersRepository = ordersRepository;
_itemsRepository = itemsRepository;
_locationsRepository = locationsRepository;
}
问题:
- 这样可以吗?
- 如果不是,我在哪里迷失了这个概念?
- 即使这是正确的,Unity 将接口注册到具体类型有什么意义?我已经这样做了,因为通用存储库强迫我声明。
请帮我解决这个问题,感谢您的所有帮助!
【问题讨论】:
标签: c# dependency-injection unity-container ioc-container