Unity在多个对象之间共享单个实例

时间:2015-04-24 02:26:19

标签: c# asp.net-mvc-3 dependency-injection inversion-of-control unity-container

在处理某些测试应用程序时,我遇到了一个场景,我希望通过Unity在其他实例中共享一个类的实例。

我有一个名为ICommon的接口,这是在Common类中实现的。 我有两个其他接口IInterface1和IInterface 2,并已在Class1和CLass2中实现。但Class1和Class2依赖于ICommon,这种依赖性通过Unity解决。但我的问题是他们没有共享相同的实例,而是他们创建了多个ICOmmon实例。所以我正在寻找Unity将共享同一个对象的东西,如果它已经创建或将创建一个新对象。

公共接口ICommon     {         void Method1();     }

@ActivityScope
@Component(dependencies = MyApplicationComponent.class,
        modules = ActivityModule.class)
public interface ActivityComponent extends MyApplicationComponent {

    void injectActivity(Activity activity);

所以我希望为ICommon创建一个实例,并在Class1和Class2之间共享。

1 个答案:

答案 0 :(得分:1)

您必须将ContainerControlledLifetimeManager用于单身人士。有关完整的详细信息,请参阅以下链接。

https://msdn.microsoft.com/en-au/library/ff647854.aspx

    // Register a default (un-named) type mapping with a singleton lifetime
    container.RegisterType<ICommon, Common>(new ContainerControlledLifetimeManager());
    // Following code will return a singleton instance of MySingletonObject
    // Container will take over lifetime management of the object
    container.Resolve<ICommon>();