У меня есть базовый класс, а также ряд других классов, наследующих от этого:
(Прошу прощения за чрезмерной эксплуатации животных аналогии)регистрирующие реализации базового класса с Autofac пройти в через IEnumerable
общественного абстрактного класса Animal {}
общественного класса Dog: Animal {}
общественного класса Cat: Animal {}
Я тогда есть класс, который имеет Зависимость от на качестве IEnumerable<Animal>
public class AnimalFeeder
{
private readonly IEnumerable<Animal> _animals;
public AnimalFeeder(IEnumerable<Animal> animals)
{
_animals = animals;
}
}
Если я вручную сделать что-то вроде этого:
var animals =
typeof(Animal).Assembly.GetTypes()
.Where(x => x.IsSubclassOf(typeof(Animal)))
.ToList();
Тогда я могу видеть, что это возвращает Dog
и Cat
Однако, когда я пытаюсь подключить свой автозагрузчик следующим образом:
builder.RegisterAssemblyTypes(typeof(Animal).Assembly)
.Where(t => t.IsSubclassOf(typeof(Animal)));
builder.RegisterType<AnimalFeeder>();
Когда создается объект AnimalFeeder
, в конструктор передается Animal
.
Я что-то пропустил?
Вы, вероятно, с отсутствующим 'Как()' в вашем registartion: 'builder.RegisterAssemblyTypes (TypeOf (Animal) .assembly) .где (т => t.IsSubclassOf (typeof (Animal))). Как (); ' –
nemesv
Можете преобразовать этот комментарий в ответ! ;-) Спасибо – Alex
Похоже, у меня есть накопитель downvoter .... – Alex