我在不同项目中的IWindsorContainerIUnityContainer之间使用了两种容器,用于服务和接口(interface)绑定(bind)。但是我不太确定有什么区别?它们具有相同的功能吗?如果是,那么在现有的基础上又需要开发另一种。还是它们有一些区别?如果是,那是什么?我将在哪个目标上使用哪个目的?我得到了一个小documentation来对抗这种困惑,但是我并没有安静地捕获它。因此,如果您让我知道,我将不胜感激。提到,我在这里使用NHibernet映射。

最佳答案

我已经使用了这两个容器,并且它们之间的巨大区别是,多年来使用它们一直是由一个团队管理UnityContainer,并且仍在扩展中。温莎的容器在返回实际错误方面不是很好。 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>();

关于asp.net-mvc - IWindsorContainer和IUnityContainer有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42336702/

10-15 06:14