是否可以将StructureMap指向包含具体实现的子目录(每个接口一个具体实现),并使StructureMap自动连接具体类,而无需在ObjectFactory.Initialize中声明您的接口(y => y.Scan。 ..)?
答案 0 :(得分:1)
是的,这是可能的(假设您遵循一些命名约定)。
示例:
接口的命名约定:IName(IA,IB)
接口实现的命名约定:名称(A,B)
以上命名约定在SM中称为默认约定。
然后您可以使用默认约定进行扫描:
ObjectFactory.Initialize(x =>
{ x.Scan(
scan =>
{
scan.AssembliesFromPath(Environment.CurrentDirectory + @"\Impl" ); //location of assemblies with interfaces implementation
scan.WithDefaultConventions();
}
);
});
如果您需要更复杂的映射规则,那么您可以实现自己的约定。
以下是有关此主题的更多信息:http://docs.structuremap.net/ScanningAssemblies.htm#section8