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

时间:2013-05-24 16:32:00

标签: .net wcf windows-services autofac self-hosting

我正在使用一系列自托管WCF服务的Windows服务。我正在使用Autofac进行DI / IoC。

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

要启用依赖项注入,我为AddDependencyInjectionBehavior的每个新实例添加了对ServiceHostdocs)方法的调用,但该方法专门请求 contractType 在这一点上我只有服务实现类型。

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

对此有一个优雅的解决方案,这是否被认为是不好的做法,或者反思是这种情况下唯一的解决方法?

赞赏任何意见。

1 个答案:

答案 0 :(得分:1)

您可以尝试枚举ServiceHost的所有端点,并从那里提取ContractType。

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

  host.AddDependencyInjectionBehavior(t, container);
}
相关问题