使用具有简单注入器的ChannelFactory

时间:2016-08-29 21:22:07

标签: c# .net wcf simple-injector channelfactory

我有一些使用ChannelFactory来创建服务实例的集成测试。

我的普通WCF服务是使用Simple Injector设置的,但我似乎无法弄清楚如何使用我的ChannelFactory代码。

以下是我的测试设置代码:

private readonly IMyService myChannel;

public TestingClient(Binding binding, string serviceUrl)
{
    var endpointAddress = new EndpointAddress(serviceUrl);

    var myChannelFactory = new ChannelFactory<IMySErvice>(binding, endpointAddress);
    myChannel = myChannelFactory.CreateChannel();
}

当我运行我的测试时,它看起来像myChannel.MyServiceOperation();但是我收到错误:

  

提供的服务类型无法作为服务加载,因为它没有默认(无参数)构造函数

这是因为通常WCF不支持带参数的构造函数。但SimpleInjector修复了它并允许它知道如何构造的参数。

因为这个MyService有一个如下所示的构造函数:

public MyService(Validations validations)
{
    this.validations = validations;
}

Validations由Simple Injector注入(参见here for how that is setup without a ChannelFactory

但由于我使用ChannelFactory手动设置它,我不知道如何在混合中获取SimpleInjector(因此它可以注入Validations对象。)

任何人都可以告诉我如何使用简单注入器来使用ChannelFactory吗?

0 个答案:

没有答案