我正在处理一个现有的asp.net项目。在该项目中,我使用统一容器版本5.2.0.0进行依赖项注入。由于这是一个大项目,因此有很多类型可以在unity容器中注册,而这些类型又具有更多的依赖性。它递归地增长。有什么方法可以管理我的统一容器的分层增长,还是应该注册所有这些依赖项?
//For Type1
container.RegisterType<ITypeA, TypeA>();
container.RegisterType<ITypeB, TypeB>();
container.RegisterType<ITypeC, TypeC>();
//For Type2
container.RegisterType<ITypeD, TypeD>();
//For TypeA
container.RegisterType<ITypeP, TypeP>();
container.RegisterType<ITypQ, TypeQ>();
//For TypeP
container.RegisterType<ITypeS, TypeS>();
container.RegisterType<ITypR, TypeR>();
现在,我的容器就是这样。实际上比这更糟。那么我该如何摆脱它。
答案 0 :(得分:0)
您可以使用unity config注册所有依赖项。
首先在App.config
的配置部分添加统一性,并提供来源(MyUnityDependencies.config
等):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity configSource="MyUnityDependencies.config" />
...
</configuration>
在MyUnityDependencies.config
中,您可以为每个容器添加寄存器类型:
<?xml version="1.0"?>
<unity>
<container name="MyContainer">
<register name="Dependency1"
type="ITypeA"
mapTo="TypeA" >
</register>
<register name="Dependency2"
type="ITypeB"
mapTo="TypeB" >
</register>
...
</container>
</unity>
最后,您可以向LoadConfiguation
注册所有依赖项
IUnityContainer container = new UnityContainer();
container.LoadConfiguration("MyContainer");