Создание всех подклассов в структурной карте - PullRequest
0 голосов
/ 13 ноября 2011

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

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

1 Ответ

2 голосов
/ 14 ноября 2011

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

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>();
...