请澄清一下

本文关键字:一下 | 更新日期: 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中的容器是什么?
  1. 什么是Resolve?
  2. 什么是RegisterType.
  3. 类型映射是什么意思?
  4. 什么是IOC

如果两个类实现相同的接口,我们在Unity上做下面的事情会发生什么:

container.RegisterType<IInvoicingService, InvoicingService>()
         .RegisterType<IInvoicingService, ManagerService>();
IInvoicingService service = container.Resolve<IInvoicingService>();
service.GetCount();

看起来要在ManagerService上调用getCount方法。如何在InvoicingServiceManagerService上调用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/

希望这个