2017-10-16 77 views
0

我只是想问一下,是否有办法以最简单的方式使用unity来注册依赖关系。寄存器依赖关系Unity

​​

我确实有30-40个类和接口,我不想编写冗余代码。有没有什么方法可以用最简单的方式编码?就像获取所有类并制作一个循环并注册它一样?

谢谢!

+0

:使用这个包,你可以扫描的实现和下面自动进行注册,请详细情况请参考项目文档任何具有公共构造函数和Unity的类型都可以在没有注册的情况下找到它。希望尽管你实际上在使用IoC。 – Crowcoder

回答

1

由于Unity 3.0可以使用约定在容器中注册实现。请在see the details here,代码如下所示。你必须指定你想要自动注册的类型,如何(选择映射),决定他们的名字和生活时间。

using (var container = new UnityContainer()) 
{ 
    container.RegisterTypes(
    AllClasses.FromLoadedAssemblies(), 
    WithMapping.MatchingInterface, 
    WithName.Default, 
    WithLifetime.ContainerControlled); 
} 

如果您在使用Unity 2.0,那么你必须使用附加软件包,看到的NuGet UnityConfiguration。如果您在使用Service Locator模式,而不是实际的IoC,那么你可以调用`解析()`上

public class FooRegistry : UnityRegistry 
{ 

    (...) 

    Scan(scan => 
    { 
      scan.AssembliesInBaseDirectory(); 
      scan.ForRegistries(); 
      scan.With<FirstInterfaceConvention>(); 
      scan.With<AddAllConvention>() 
       .TypesImplementing<IHaveManyImplementations>(); 
      scan.With<SetAllPropertiesConvention>().OfType<ILogger>(); 
      scan.ExcludeType<FooService>(); 
    }); 
} 
+0

我认为它的v3.5和更高版本。我只是在2.0 –

+0

好的,我更新了我的答案以涵盖Unity 2.0,祝你好运!如果我的帖子有帮助,请将其标记为答案,它会帮助其他人。 –

+0

安装unityconfiguration后,仍无法找到RegisterTypes的扩展名。 :( –