我有接口IModule
和几个实现它的类。
在测试中,我需要创建实现该接口的每种类型(类)的实例。
是可能的(使用StructureMap)?
答案 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>();