目前,我正在使用单例类,并且在我使用它的每个地方都可以。但是,我想为此使用Unity IoC容器。按以下方式注册它不符合我希望的方式:

container.RegisterInstance(new SomeNiceClass(), new ContainerControlledLifetimeManager());


意思是如果我这样做:

container.Resolve<SomeNiceClass>();


在除了第一次注册的汇编类中,我将获得一个新实例。

最佳答案

只要您将引用传递给同一容器,程序集边界就无关紧要。

您可以尝试命名:

container.RegisterInstance<SomeNiceClass>("MySingleton", new SomeNiceClass(), new ContainerControlledLifetimeManager());
container.Resolve<SomeNiceClass>("MySingleton");


还值得注意的是,文档说容器寿命是RegisterInstance的默认设置,因此您可以像这样注册:

container.RegisterInstance<SomeNiceClass>(new SomeNiceClass());


在此处阅读有关MSDN的评论:https://msdn.microsoft.com/en-ca/library/ff647854.aspx

如果仍然有问题,则需要再次查看如何处理容器。

关于c# - 在Unity中的程序集之间共享实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33964558/

10-11 23:04