我在不同项目中使用IWindsorContainer
和IUnityContainer
之间的两种类型的容器进行服务和接口绑定。但是我不确定有什么区别?他们有相同的功能吗?如果是,那么在现有的情况下需要开发另一个。或者他们有一些差异?如果是,那是什么?我将使用哪一个目的?我有一个小documentation反对这种混乱,但我没有安静地抓住它。所以,如果你让我知道,那么我将不胜感激。请注意,我在这里使用NHibernet
映射。
答案 0 :(得分:3)
我已经使用了两个容器以及它们之间的巨大差异,多年来使用它们一直是UnityContainer由团队管理并且仍在扩展。 Windsor容器在返回真正的错误方面不是很好。 UnityContainer具有出色的文档,使用nuget或其他存储库管理器进行安装非常简单。
这就是我的意思......如果你看看如何使用他们的代码,https://github.com/castleproject/Windsor/blob/master/docs/README.md,例如windsor非常模糊。
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>();
答案 1 :(得分:1)
查看以下链接。这可能会对您有所帮助https://visualstudiomagazine.com/articles/2014/09/25/refactor-5.aspx