请澄清一下
本文关键字:一下 | 更新日期: 2023-09-27 18:06:48
有人可以帮助我了解Unity是什么,以及它是如何简化编码的例子如下:
<<p> 正常代码/strong>FileLogger myLogger = new FileLogger();
FileLogger myLogger = new FastLogger();
统一容器代码
// Create container and register types
IUnityContainer myContainer = new UnityContainer();
myContainer.RegisterType<ILogger, FileLogger>(); // default instance
myContainer.RegisterType<ILogger, FastFileLogger>("FastLogger");
ILogger myLogger = myContainer.Resolve<ILogger>();
也:
- Unity中的容器是什么?
- 什么是Resolve?
- 什么是RegisterType.
- 类型映射是什么意思?
- 什么是IOC
如果两个类实现相同的接口,我们在Unity上做下面的事情会发生什么:
container.RegisterType<IInvoicingService, InvoicingService>()
.RegisterType<IInvoicingService, ManagerService>();
IInvoicingService service = container.Resolve<IInvoicingService>();
service.GetCount();
看起来要在ManagerService
上调用getCount
方法。如何在InvoicingService
和ManagerService
上调用GetCount
?
是的,我读过CodePlex的文档,它让我很困惑!
对于IOC和/或依赖注入,我可以推荐这样读:
http://martinfowler.com/articles/injection.html这将帮助您更好地理解使用该模式可以实现什么。Unity可以帮助你在。net中实现这些模式。
我将尽我所能回答你的问题:
- 你的容器就是:一个容器。你可以在 中存储你的映射
- "Resolve"将你的接口解析为该特定接口实现的具体实例。但是,您只会在该接口上操作,因此使实现可交换(做这整个事情的主要原因是什么)
- "RegisterType"通常允许你为一个接口注册一个具体类。所以你基本上说:"这是接口,如果有人请求解析这个接口,返回这个具体类的实例"。正如你所看到的,你可以有默认的和命名的类型映射。
- 类型映射是接口和实现之间的映射。
这里有一个博客的链接,该博客描述了unity以及如何在面向方面编程(AOP)和策略注入方面使用unity的示例。该博客还包括3个来自Dino Espisito的MSDN文章的链接。
http://bardevblog.wordpress.com/2011/03/21/aop-policy-injection-with-unity/希望这个