【发布时间】:2014-05-06 13:20:24
【问题描述】:
我在如何使用 SimpleInjector 正确配置 DI 时遇到了一些困难。我有一个外部 Web 服务,其绑定位于 Web.config 文件中。我的外部 Web 服务位于服务层中。我的 Web 层包含组合根,它调用我的域层来注册服务 - 域层然后将调用 DAL 层和服务层来注册它需要的服务。这可以正常工作,然后在我的域层中,我可以使用我在域服务层构造函数中的服务层上创建的注入服务。
但是在我的服务层中,我有类似下面的内容:
public class MyService : IMyService
{
private readonly ExternalServiceClient _externalServiceClient;
public MyService()
{
_externalServiceClient = new ExternalServiceClient("WSHttpBinding_IExternalService");
}
这种设计可能不是最好的,因为它将 MyService 紧密耦合到依赖外部 ServiceClient - 我想要实现的是能够拥有我自己的外部客户端存根,然后在实际的外部服务客户端或我的外部服务客户端的存根版本。
所以我的构造函数看起来像:
private readonly ExternalServiceClient _externalServiceClient;
public MyService(ExternalServiceClient externalServiceClient)
{
_externalServiceClient = externalServiceClient);
}
其中 - externalServiceClient 是新的
ExternalServiceClient("WSHttpBinding_IExternalService"); 或我的外部客户端的存根版本。
我不确定 SimpleInjector 的问题是如何正确连接它,以便我可以轻松地在哪个 ExternalClient 传递到构造函数之间切换?
【问题讨论】:
标签: c# .net dependency-injection ioc-container simple-injector