如何在多个 类 中访问同一个 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