首页 文章

自托管WCF:自动创建服务主机并使用Autofac启用依赖注入

提问于
浏览
0

我正在开发一个带有许多自托管WCF服务的Windows服务 . 我正在使用Autofac进行DI / IoC .

WCF服务和 endpoints 在app.config中设置,并且enumerating the configured services,Windows服务能够为每个配置的WCF服务自动创建和打开 ServiceHost .

为了启用依赖注入,我为 ServiceHost 的每个新实例添加了对 AddDependencyInjectionBehaviordocs)方法的调用,但该方法专门请求 contractType ,此时我只有服务实现类型 .

我可以通过使用反射查找已实现的接口来检索 Contract 类型,但由于这是我使用Autofac的第一个项目,我想确保我不会错过这一切 .

有没有一个优雅的解决方案,这是任何一个被认为是不好的做法,还是反映在这种情况下唯一的方法?

任何输入都表示赞赏 .

1 回答

  • 1

    您可以尝试枚举ServiceHost的所有 endpoints ,并从那里提取ContractType .

    ServiceHost host = ...
    foreach (ServiceEndpoint endpoint in host.Description.Endpoints)
    {
      var contract = endpoint.Contract;
      Type t = contract.ContractType;
    
      host.AddDependencyInjectionBehavior(t, container);
    }
    

相关问题