StructureMap:如何在与ConnectImplementationsToTypesClosing相关的类型上设置生命周期

Chr*_*sic 6 c# structuremap lifecycle inversion-of-control

在我的注册表中我有

Scan(scanner =>
         {
             scanner.AssemblyContainingType<EmailValidation>();
             scanner.ConnectImplementationsToTypesClosing(typeof(IValidation<>));
         });
Run Code Online (Sandbox Code Playgroud)

我应该做些什么来将这些全部定义为单身人士?

另外,作为这个问题的一小部分,有没有理由不将无状态的所有内容定义为在StructureMap中注册的单例对象?

Jos*_*gan 12

Kevin的答案对于2.5.4及更早版本是正确的.在当前的StructureMap主干中(当发布2.5.5+时),您现在可以:

Scan(scanner =>
{
   scanner.AssemblyContainingType<EmailValidation>();
   scanner.ConnectImplementationsToTypesClosing(typeof(IValidation<>))
          .OnAddedPluginTypes(t => t.Singleton());
});
Run Code Online (Sandbox Code Playgroud)