.NET - создать экземпляр каждого типа, который реализует определенный интерфейс - PullRequest
0 голосов
/ 05 мая 2010

У меня есть интерфейс IModule и несколько классов, которые его реализуют. В тесте мне нужно создать экземпляр каждого типа (класса), реализующего этот интерфейс. Возможно ли это (с StructureMap)?

Ответы [ 2 ]

3 голосов
/ 05 мая 2010

Для этого используется StructureMap:

var container = new Container(x => x.Scan(scan =>
{
    scan.TheCallingAssembly(); // there are options to scan other assemblies
    scan.AddAllTypesOf<IModule>();
}));

var allInstances = container.GetAllInstances<IModule>();
3 голосов
/ 05 мая 2010

Я не знаком с StructureMap.В любом случае вам нужно иметь список типов, реализующих IModule, затем вы создаете объект каждого типа в списке.

Чтобы получить список типов динамически, он может быть:* Для создания экземпляров типов:

IModule[] instances = (
    from type in types
    select (IModule)Activator.CreateInstance(type))
    .ToArray();
...