Singleton Unity容器

时间:2013-08-12 17:23:38

标签: c# wpf inversion-of-control unity-container ioc-container

我刚开始了解IOC团结框架。我在MSDN上阅读了几篇文章和视频。我很清楚这种统一的运作方式。

1.创建容器。
2.注册你的界面/班级 3.解决你的课程。

我认为应该为每个项目抽象步骤1,2。创建创建容器和注册接口/类的单例类是否是个好主意,以便整个项目中的统一容器可供我解决。请指教。

3 个答案:

答案 0 :(得分:0)

除了少数情况之外,您应该始终为整个应用程序(应用程序域)提供单个容器实例。 DI容器是线程安全的,并针对该场景进行了优化。拥有多个容器可能会导致性能问题,并可能导致维护问题,因为某些方案很难实现(例如,使用应用程序作用域对象)。

答案 1 :(得分:0)

使用单身人士。在我目前的公司中,我们在Unity容器周围使用单独的包装器:

  • 当然是单身人士
  • 公开最重要的功能(如注册和解决)
  • 从web.config / app.config
  • 获取其配置
  • 但也可以在运行时提供(例如,用于单元测试)
  • 具有在解决期间出现意外错误时的默认处理功能

它就像一个魅力,可以很容易地专注于重要的事情。

答案 2 :(得分:0)

不要使用单身人士。它鼓励你在所有地方呼叫解决,这是一个着名的DI反模式。

相反,在您的应用中有一个点(桌面应用中的主要功能,在您的网络应用中的应用启动功能中),您可以使用容器来解析对象图并从那里开始。

请查看Mark Seeman's discussion of "Composition Root"了解更多详情。