在处理某些测试应用程序时,我遇到了一个场景,我希望通过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之间共享。
答案 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>();