作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用同一服务的多个实现时,指定 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/
我想切换服务实现的功能。这很容易通过使接口(interface)继承 IDependency 并简单地标记实现来实现: [OrchardFeature("MyFeature")] [OrchardSu
当使用同一服务的多个实现时,指定 Orchard CMS 应该注入(inject)哪个依赖项的最佳方法是什么? 例如,我需要能够在我的开发环境中使用 Web 服务消费者类的 Fake/Mock 实现,
我是一名优秀的程序员,十分优秀!