.NET - 创建实现特定接口的每种类型的实例

时间:2010-05-05 08:56:13

标签: .net structuremap

我有接口IModule和几个实现它的类。 在测试中,我需要创建实现该接口的每种类型(类)的实例。 是可能的(使用StructureMap)?

2 个答案:

答案 0 :(得分:3)

我不熟悉StructureMap。无论如何,你需要有实现IModule的类型列表,然后在列表中创建每种类型的对象。

要动态获取类型列表,可以是:

var types =
    from asm in AppDomain.CurrentDomain.GetAssemblies()
    from type in asm.GetType()
    where !type.IsAbstract
    where typeof(IModule).IsAssignableFrom(type)
    select type;

要实例化类型:

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

答案 1 :(得分:3)

使用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>();