Использование 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 ?

0 ответов

Другие вопросы по тегам