我只是想问一下是否有办法以最简单的方式使用统一来注册依赖项。
public class Module : IModule
{
IUnityContainer _container;
IRegionManager _regionManager;
public Module (IUnityContainer container, IRegionManager regionManager)
{
_container = container;
_regionManager = regionManager;
}
public void initialize()
{
IRegion region = _regionManager.Regions[RegionNames.ContentRegion];
_container.RegisterType<"InterfaceHERE", "CLASSHERE">();
}
我有30-40个类和接口,我不想将其编码为冗余。有没有办法以最简单的形式编码?就像获取所有类并进行循环并注册它一样?
谢谢!
答案 0 :(得分:1)
从Unity 3.0开始,您可以使用约定在容器中注册您的实现。请see the details here,代码如下所示。您必须指定要自动注册的类型,方式(选择映射),决定其名称和生命时间。
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>();
});
}
如果您使用的是Unity 2.0,则必须使用其他软件包,请参阅nuget UnityConfiguration。使用此软件包,您可以扫描实现并自动注册,如下所示,请查看项目文档以获取详细信息:
{{1}}