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