我刚刚开始了解 IOC 统一框架。我在 MSDN 上阅读了几篇文章和视频。我很了解这种统一的东西是如何运作的。
1.创建容器。
2.注册你的接口/类。
3.解决你的课程。
我认为应该为每个项目抽象步骤 1,2。创建创建容器并注册接口/类的单例类是否是个好主意,以便统一容器在整个项目中可供我解决。请指教。
我刚刚开始了解 IOC 统一框架。我在 MSDN 上阅读了几篇文章和视频。我很了解这种统一的东西是如何运作的。
1.创建容器。
2.注册你的接口/类。
3.解决你的课程。
我认为应该为每个项目抽象步骤 1,2。创建创建容器并注册接口/类的单例类是否是个好主意,以便统一容器在整个项目中可供我解决。请指教。
使用单例。在我目前的公司中,我们在 Unity 容器周围使用单例包装器:
它就像一种魅力,可以让您轻松专注于重要的事情。
不要使用单例。它鼓励您到处调用 resolve,这是众所周知的 DI 反模式。
相反,在您的应用程序(桌面应用程序中的主要功能,Web 应用程序中的应用程序启动功能)中有一个点,您可以使用容器来解析您的对象图并从那里开始。
有关更多详细信息,请参阅Mark Seeman 对“组合根”的讨论。
除了极少数情况外,您应该始终为整个应用程序(应用程序域)拥有一个容器实例。DI 容器是线程安全的,并针对该场景进行了优化。拥有多个容器可能会导致性能问题并可能导致维护问题,因为某些场景很难实现(例如拥有应用程序范围的对象)。