поэтому у меня проблема с получать все экземпляры классов, которые реализуют общий интерфейс прийти через в моем конструктореNinject конвенции инъекционные многократного связывания конструктор
Я использую
kernel.Bind(x => x.FromThisAssembly().SelectAllClasses()
.InheritedFrom(typeof(IRepository<>)).BindAllInterfaces());
У меня есть тест, который проходит, когда я спрашиваю для конкретного хранилища
var booking = kernel.Get<BookingRepository>();
Assert.IsNotNull(booking);
, но я создал класс, который принимает
ICollection<IRepository<EntityBase>> repositories,
где EntityBase является абстрактным классом, что все мои объекты наследуют от и я не получаю ничего назад и испытание
var rep = kernel.GetAll<IRepository<EntityBase>>();
не содержит ничего, когда я утверждаю, что он содержит что-то с помощью .any()
, если я вручную добавить сопоставление
kernel.Bind<IRepository<EntityBase>>().To<BookingRepository>();
то это будет нагнетаться в коллекции и будет работать, но я хотел сохранить себе хлопот, вспоминая добавить сопоставление, когда я создаю новый репозиторий и просто привяжу его к приложению.
Может ли я получить все репозитории инъекционных в конструктор с помощью
ICollection<IRepository<EntityBase>>
Всегда ли верно, что IRepository можно назначить IRepository ? –
treze
Да, у меня есть тип сущности и тип ценностного типа – scaifyuk