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

Jon*_*ott 4 c# silverlight dependency-injection inversion-of-control unity-container

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

谢谢,-Jon

Geo*_*voy 10

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


Mar*_*ann 9

这有点令人困惑,因为当我们在DI术语中提到单身人士时,我们并不意味着与Singleton设计模式相同.

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

你可以说Singleton Lifetime是一个本地范围的 Singleton.

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

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

  • @George Polevoy:不,我不是 - 我试图解释这些差异.Singleton是一种设计模式,但Singleton Lifestyle也是一种模式.这是我们在所有容器中看到的DI容器生活方式模式,尽管它有不同的名称.其他容器生活方式模式包括Transient,Per Resolve,Per HTTP Request,Per Thread等. (3认同)