ClientBase <t>如何实现ServiceContract通道接口?</t>

时间:2015-01-13 22:03:14

标签: c# .net wcf generics reflection

ClientBase提供了一个实现T ServiceContract接口的Channel属性。这个类用于自动实现接口的方法是什么,并且是否有一个如何实现此方法的示例(即,对于我自己的类)?

2 个答案:

答案 0 :(得分:4)

看到Reference Source,看起来它正在使用频道工厂......

为了使非常长时间缩短,请考虑一下 - 你要求的是一个动态代理,一个拦截方法调用并检查数据的类。在WCF的情况下,它使用MethodInfo和相关属性将呼叫作为RPC通过任何协议和连接建立发送。

请参阅RealProxy了解.NET中的入门者,并且还考虑到有很多代理库。

答案 1 :(得分:3)

我并不确切知道它是如何实施的。

但它指出了编程中的一般问题 - 您希望在运行时动态创建一个实现任何给定接口的对象。

在WCF情况下,这个动态创建的对象将拦截任何调用,然后查看方法和参数的属性,以确定如何将其序列化为SOAP或JSON消息。

我使用的动态代理的实现是Castle DynamicProxy。

http://www.castleproject.org/projects/dynamicproxy/