如何在多个类中访问相同的IoC容器(即Unity)?
以下容器是嵌入方法内部时的局部变量。 因此,如何在其他类中访问此容器?
using (var container = new UnityContainer())
{
container.RegisterInstance(typeof(IDraftRepository), new MockDraftRepository());
}
答案 0 :(得分:3)
您可以创建静态类并使其将容器公开为属性。然后所有其他类都可以访问和使用它。另一种方法是将IUnityContainer
注入到想要使用它的类中(通过构造函数注入)。
话虽如此,我强烈建议你不要这样做。应该使用容器的唯一地方是Composition Root,您可以在应用程序的入口点将所有类组合在一起。
如果你的类需要依赖项,你可以在构造函数中注入它们。
在类中使用容器称为服务位置and is considered an anti-pattern。