通过引入工厂使依赖项注入为可选?

| 因此,我有一个包含早午餐服务类的软件。这些服务通过它们各自的构造函数具有一定的依赖性。 我在设计时就考虑了依赖项注入,但是打算在软件之上构建的开发人员可能不希望使用DI。因此,我尚未实现IOC容器,因此开发人员可以根据需要引入一个IOC容器。 我的问题是该软件随附一个管理网站,该网站使用这些服务。 我不想在站点中对服务依赖项进行硬编码,因为我希望开发人员可以根据需要切换它们。 那么我应该怎么做呢? 我当时正在考虑建立一家服务工厂,并在某个地方提供固定的静态位置。然后在网站上使用它。
public class ServiceFactory : IServiceFactory
{
    public static IServiceFactory Current { get; set; }

    static ServiceFactory()
    {
        Current = new ServiceFactory();
    }

    public TService Create<TService>()
    {
        // Creation logic here.
    }
}
通过将自己的ѭ1的实现设置为静态
ServiceFactory.Current
属性,开发人员将能够控制事物。 这是要走的路吗?     
已邀请:
您是否看过CommonServiceLocator库?它旨在在IOC容器上提供抽象层,但是您也可以按其描述的那样使用它来抽象服务工厂,这样您的应用程序就可以解析其依赖关系,而不必知道它们是来自DI还是来自A。工厂实施...     
我想指出两件事。 您提出的不是依赖注入,而是服务位置。它们不一样。 理想情况下,依赖注入对开发人员是完全透明的。即真正的依赖关系是通过构造函数而非间接输入的。     

要回复问题请先登录注册