Я пытаюсь использовать следующий общий интерфейс репозитория для DI и инсталляции конструктора:
public interface IRepository<TEntity> : IDisposable where TEntity : class
Проблема заключается в том, чтобы определить экземпляр интерфейса, я должен предоставить тип класса следующим образом:
private IRepository<Person> _personRepository;
Проблема с этим заключается в том, что я использую DI (и я использую Unity для инфраструктуры IoC), тогда мне нужно определить несколько экземпляров в моем конструкторе, чтобы получить все интерфейсы репозитория, с которыми мне нужно работать следующим образом:
public MyClass(IRepository<Person> personRepository,
IRepository<Orders> ordersRepository,
IRepository<Items> itemsRepository,
IRepository<Locations> locationsRepository)
{
_personRepository = personRepository;
_OrdersRepository = ordersRepository;
_itemsRepository = itemsRepository;
_locationsRepository = locationsRepository;
}
Вопросы:
- Это нормально?
- Если нет, где я потерял эту концепцию?
- Даже если это правильно, какой смысл Unity регистрировать Interface для конкретного типа? Я уже сделал это, потому что общий репозиторий заставил меня объявить.
Пожалуйста, помогите мне разобраться, и я ценю всю вашу помощь!