我有一些使用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
吗?