目前,我正在使用单例类,并且在我使用它的每个地方都可以。但是,我想为此使用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/