gpt4 book ai didi

dependency-injection - Orchard CMS 同一接口(interface)的多个 IDependency 类

转载 作者:行者123 更新时间:2023-12-04 08:22:57 24 4
gpt4 key购买 nike

当使用同一服务的多个实现时,指定 Orchard CMS 应该注入(inject)哪个依赖项的最佳方法是什么?

例如,我需要能够在我的开发环境中使用 Web 服务消费者类的 Fake/Mock 实现,但在测试/UAT/生产环境中我需要使用真实的实现。例如界面:

public interface IWebServiceClient : IDependency {...}

真正的实现:

public class WebServiceClient : IWebServiceClient {...}

伪造的实现:

public class FakeWebServiceClient : IWebServiceClient {...}

例如,在非 Orchard 站点上使用 Autofac,我可能会使用 ConfigurationSettingsReader 并在 web.config 中指定我的假依赖项作为覆盖。非调试部署的 web.config 转换将删除这些覆盖。

最佳答案

最简单的方法是使每个功能成为一个功能。

[OrchardFeature("MyModule.Live")]
public class WebServiceClient : IWebServiceClient {...}

[OrchardFeature("MyModule.Test")]
public class FakeWebServiceClient : IWebServiceClient {...}

然后只需在您的 Module.txt 中定义这些功能并在您的机器上启用测试并在 uat/live 中运行

关于dependency-injection - Orchard CMS 同一接口(interface)的多个 IDependency 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711251/

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