Использование 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 (см. здесь, как это настроить без ChannelFactory
)
Но так как я настраиваю его вручную с ChannelFactory
Я не знаю, как получить SimpleInjector в смеси (так что он может ввести Validations
объект).
Может кто-нибудь сказать мне, как заставить Simple Injector работать с ChannelFactory
?