Добавление поддержки IoC в мою службу WCF, размещенную в службе Windows (Autofac) - PullRequest
6 голосов
/ 07 мая 2010

Я бы хотел настроить свои службы WCF на использование контейнера IoC. В вики Autofac есть статья об интеграции WCF, но она показывает только интеграцию со службой, размещенной в IIS.

Но мои службы размещены в службе Windows.

Здесь я получил совет подключиться к открытию http://groups.google.com/group/autofac/browse_thread/thread/23eb7ff07d8bfa03

Я последовал совету, и вот что я получил до сих пор:

    private void RunService<T>()
    {
        var builder = new ContainerBuilder();

        builder.Register(c => new DataAccessAdapter("1")).As<IDataAccessAdapter>();

        ServiceHost serviceHost = new ServiceHost(typeof(T));

        serviceHost.Opening += (sender, args) => serviceHost.Description.Behaviors.Add(
            new AutofacDependencyInjectionServiceBehavior(builder.Build(), typeof(T), ??? ));                      


        serviceHost.Open();
     }

AutofacDependencyInjectionServiceBehavior имеет ctor, который принимает 3 параметра. Третий тип IComponentRegistration, и я понятия не имею, откуда его взять. Есть идеи?

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 07 мая 2010

Я написал сообщение в блоге, в котором описывается, как использовать интеграцию Autofac WCF при самостоятельном размещении служб WCF.

http://alexmg.com/self-hosting-wcf-services-with-the-autofac-wcf-integration/

Этого должно быть достаточно, чтобы указать вам правильное направление. Я собираюсь обновить документацию на вики-сайте Autofac, включив в нее тот же пример.

0 голосов
/ 19 июня 2018

В ответе Алекса Мейера произошли некоторые изменения в Autofac. Это в основном одна строка кода:

//Instead of
host.Description.Behaviors.Add(new AutofacDependencyInjectionServiceBehavior(container, typeof(EchoService), registration));
//Use this
host.AddDependencyInjectionBehavior<IEchoService>(container);

Источник: https://autofaccn.readthedocs.io/en/latest/integration/wcf.html#self-hosting

...