Возможно ли, чтобы Ninject получил все экземпляры, которые наследуются от определенного абстрактного класса? Например, у меня есть следующий абстрактный класс.Ninject: экземпляры GetAll, которые наследуются от одного и того же абстрактного класса
public abstract class MyAbstractClass { }
Тогда у меня есть следующие два производных класса, которые наследуются от одного и того же абстрактного класса.
public class MyDerivedClass1 : MyAbstractClass { }
public class MyDerivedClass2 : MyAbstractClass { }
Теперь я собираюсь связать обе производные классы с ядром, потому что я хочу, чтобы они были в одноплодной области.
_kernel = new StandardKernel();
_kernel.Bind<MyDerivedClass1>().ToSelf().InSingletonScope();
_kernel.Bind<MyDerivedClass2>().ToSelf().InSingletonScope();
Я знаю, что ядро может вернуть мне экземпляр, подобный следующему.
_kernel.Get<MyDerivedClass1>();
Есть ли способ получить все классы, которые наследуются от MyAbstractClass? Я пробовал следующее без успеха.
IEnumerable<MyAbstractClass> items = kernel.GetAll<MyAbstractClass>();
Надежда была, что описанный выше способ GETALL() будет возвращать список из двух экземпляров, один будет MyDerivedClass1, а второй будет MyDerivedClass2.
Спасибо, что сделал трюк с меньшим количеством кода! Возможно ли создать такой синтаксический привязку для всех классов, которые наследуются от MyAbstractClass автоматически? Может быть, какая-то комбинация Ninect и Reflection, которая найдет все конкретные классы, которые наследуются от MyAbstractClass? – Eric
@eric да. Для этого вы можете использовать [Ninject.Extensions.Conventions] (https://github.com/ninject/ninject.extensions.conventions). Если вам нужна дополнительная информация, вероятно, уже есть вопрос о SO, охватывающий это или аналогичный сценарий. Если нет, вы можете, конечно, задать новый вопрос. – BatteryBackupUnit