Создание экземпляров всех подклассов в структурной карте

#c# #asp.net-mvc #dependency-injection #structuremap

#c# #asp.net-mvc #внедрение зависимостей #structuremap

Вопрос:

Я пытаюсь создать экземпляры всех подклассов одного класса, используя structuremap. Как бы я это сделал и как бы я контролировал их жизненный цикл?

У меня есть базовый тип, который другие разработчики наследуют для создания своих классов. В какой-то момент я хочу создать экземпляры всех этих подклассов и вызвать методы для них.

Комментарии:

1. С каким битом вам нужна помощь, с определением того, какие типы наследуются от вашего класса, или с созданием экземпляра объекта типа T ?

2. Вы хотите получить список всех производных типов?

Ответ №1:

Вы можете выполнить пакетную регистрацию следующим образом:

 container.Configure(r =>
{
  foreach (var assembly in
      AppDomain.CurrentDomain.GetAssemblies())
  {
    r.Scan(s =>
    {
      s.Assembly(assembly);
      s.AddAllTypesOf<MyBaseType>();
    });
  }
});
  

И вы можете разрешить все зарегистрированные типы следующим образом:

 IList<MyBaseType> filters = 
    container.GetAllInstances<MyBaseType>();