gpt4 book ai didi

c# - 通过引入工厂使依赖注入(inject)成为可选项?

转载 作者:行者123 更新时间:2023-11-30 22:38:27 25 4
gpt4 key购买 nike

所以我有一个软件,其中包含一系列服务类。这些服务通过它们各自的构造函数具有一些依赖性。

我在设计时考虑了依赖注入(inject),但要在软件之上构建的开发人员可能不想使用 DI。因此,我没有实现 IOC 容器,因此如果需要,由开发人员引入一个。

我的问题是该软件附带一个使用这些服务的管理网站。我不想在站点中对服务依赖项进行硬编码,因为我想让开发人员可以根据需要切换它们。

那我该怎么办呢?

我在考虑为服务引入一个工厂,并在某个地方给它一个固定的静态位置。然后在网站上使用它。

public class ServiceFactory : IServiceFactory
{
public static IServiceFactory Current { get; set; }

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

public TService Create<TService>()
{
// Creation logic here.
}
}

开发人员将能够通过将他们自己的 IServiceFactory 实现设置为静态 ServiceFactory.Current 属性来控制事情。

这是要走的路吗?

最佳答案

有两点我要注意。

  • 您提议的不是依赖注入(inject),而是服务位置。 They are not the same .
  • 理想情况下,依赖注入(inject)对开发人员是完全透明的。 IE。真正的依赖关系通过构造函数进入,而不是通过间接访问。

关于c# - 通过引入工厂使依赖注入(inject)成为可选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com