structuremap自动在子目录中查找缺少的实现

时间:2014-05-12 10:08:21

标签: c# dependency-injection structuremap

是否可以将StructureMap指向包含具体实现的子目录(每个接口一个具体实现),并使StructureMap自动连接具体类,而无需在ObjectFactory.Initialize中声明您的接口(y => y.Scan。 ..)?

1 个答案:

答案 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

以下是示例解决方案:https://github.com/st4hoo/StructuremapExample