7

我与两个2种类型的容器IWindsorContainerIUnityContainer之间在不同项目服务和接口绑定工作。但我不确定有什么区别?他们有相同的功能吗?如果是的话,那么在现有的情况下需要开发另外一个。还是他们有一些分歧?如果是,那是什么?哪一个目的我会用哪一个?反对这种混乱,我得到了一个小小的documentation,但我没有安静地抓住它。所以如果你让我知道它,那么我会很感激。提到,我在这里使用NHibernet映射。IWindsorContainer vs IUnityContainer和有什么不一样?

+0

[依赖注入容器的可能的复制?它有什么作用?(http://stackoverflow.com/questions/8015101/dependency-injection-container-what-does-it-do) – NightOwl888

+0

亲爱的@ NightOwl888,我想知道的差异,其中应我使用在哪种情况下。我想你不明白我问过的。关于你在那里提供的重复答案,他们只讨论了'Windsor文档',没有关于'IUnityContainer'的其他内容,我也在这里讨论。 –

+4

您可以使用任何您想要的DI容器(或根本没有DI容器)来实现依赖注入模式。但在相同的应用程序中使用多个应用程序可能是错误的。要了解有关依赖注入我建议你阅读[在.NET依赖注入(https://www.manning.com/books/dependency-injection-in-dot-net)。这个主题过于宽泛,不能用简单的问答格式来讨论。 – NightOwl888

回答

3

我用两个容器,它们之间的巨大差异,多年来使用每个一直认为UnityContainer由一个团队管理,仍然被延长。温莎的容器在回归真正的错误方面并不是很出色。 UnityContainer有很好的文档,使用nuget或其他仓库管理器安装非常简单。

这里是我的意思是......如果你看看如何使用自己的代码,https://github.com/castleproject/Windsor/blob/master/docs/README.md,温莎例如非常模糊。

public void Install(IWindsorContainer container, IConfigurationStore store) 
    { 
     container.Register(Classes.FromThisAssembly() 
          .Where(Component.IsInSameNamespaceAs<King>()) 
          .WithService.DefaultInterfaces() 
          .LifestyleTransient()); 
    } 

如果你想看看团结,https://github.com/unitycontainer/unity/blob/master/quickstarts/CS/EventBroker/Src/Stoplight/Program.cs,它变得更清楚什么是用不同的方式注册它们发生。使用Unity时,错误代码在使用兔子洞时也更加干净。

IUnityContainer container = new UnityContainer() 

      .AddNewExtension<SimpleEventBrokerExtension>() 

      .RegisterType<ILogger, TraceLogger>() 

      .RegisterType<IStoplightTimer, RealTimeTimer>(); 
相关问题