我只是想问一下,是否有办法以最简单的方式使用unity来注册依赖关系。寄存器依赖关系Unity
我确实有30-40个类和接口,我不想编写冗余代码。有没有什么方法可以用最简单的方式编码?就像获取所有类并制作一个循环并注册它一样?
谢谢!
我只是想问一下,是否有办法以最简单的方式使用unity来注册依赖关系。寄存器依赖关系Unity
我确实有30-40个类和接口,我不想编写冗余代码。有没有什么方法可以用最简单的方式编码?就像获取所有类并制作一个循环并注册它一样?
谢谢!
由于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>();
});
}
我认为它的v3.5和更高版本。我只是在2.0 –
好的,我更新了我的答案以涵盖Unity 2.0,祝你好运!如果我的帖子有帮助,请将其标记为答案,它会帮助其他人。 –
安装unityconfiguration后,仍无法找到RegisterTypes的扩展名。 :( –
:使用这个包,你可以扫描的实现和下面自动进行注册,请详细情况请参考项目文档任何具有公共构造函数和Unity的类型都可以在没有注册的情况下找到它。希望尽管你实际上在使用IoC。 – Crowcoder