是否可以为通用服务创建WCF服务主机?

kom*_*roS 5 .net wcf

我想提供如下服务:

[ServiceContract]
interface IMyService<T>
{
   [ServiceOperation]
   void Foo(T item);
}
Run Code Online (Sandbox Code Playgroud)

我可以在运行时发现我的通用契约的所有参数的类型(使用一些属性装饰)并使用类似的东西:

typeof(IMyService<>).MakeGenericType(typeof(Contact))
Run Code Online (Sandbox Code Playgroud)

我可以为合同和服务实现获得有界泛型类型.从运行时的基本配置开始,我还可以将端点添加到主机.更了解我感兴趣的所有数据合约,我可以为主机添加一个DataContractResolver

挑战是托管服务.在编译时我不知道类型参数,但我可以在运行时找到它.如何扩展ServiceHost或ServiceHostBase以在其中注入服务类型:

MyService<Contact> 
Run Code Online (Sandbox Code Playgroud)

什么时候需要?ServiceHost无论如何只需要在运行时...

小智 0

不能使用ServiceHostFactory吗?