我需要一个Unity容器的单个实例吗?

时间:2011-02-06 19:52:13

标签: c# silverlight dependency-injection inversion-of-control unity-container

抱歉这个noob问题。我开始在Silverlight中使用Unity 2.0容器,并在其中添加一些单例。为了让单身人士工作,我是否需要在我的应用程序中只有一个容器实例?我假设每当我想查找我的单身时,创建一个新的单位容器实例将导致单独的容器与单独的单例。

谢谢, -Jon

2 个答案:

答案 0 :(得分:10)

您需要一个容器的单个实例来实现单例行为。 您还需要使用ContainerControlledLifetimeManager注册单例类。

答案 1 :(得分:9)

这有点令人困惑,因为当我们在DI术语中提到单身人士时,我们的意思与Singleton design pattern并不相同。

基本上, Singleton Lifestyle 在同一个容器中表现为(模式)Singleton ,但如果您从容器的新实例创建并使用它,那么将得到一个不同的实例。

您可以说 Singleton Lifetime 本地范围的 Singleton。

总结容器使用情况,您不需要Singleton容器,但需要单容器实例才能使用Singleton Lifestyle。

为了让事情更加混乱,在Unity中,Singleton的生活方式被称为ContainerControlledLifetimeManager ......