【问题标题】:How does the ClientBase<T> implement the ServiceContract channel interface?ClientBase<T> 如何实现 ServiceContract 通道接口?
【发布时间】:2015-03-12 00:14:00
【问题描述】:

ClientBase 提供了一个实现 T ServiceContract 接口的 Channel 属性。这个类使用什么方法来自动实现接口,有没有一个如何实现这个方法的例子(即,对于我自己的类)?

【问题讨论】:

标签: c# .net wcf generics reflection


【解决方案1】:

我不知道它是如何实现的。

但它指出了编程中的一个普遍问题——你想在运行时动态创建一个对象来实现任何给定的接口。

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

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

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

【讨论】:

    【解决方案2】:

    看到Reference Source,好像是在使用Channel Factory...

    要使 非常 长的挖掘更短,请考虑这一点 - 您需要的是一个动态代理,一个拦截方法调用并检查它们的数据的类。在 WCF 的情况下,它使用 MethodInfo 和相关属性通过已建立的任何协议和连接将调用作为 RPC 发送。

    请参阅 RealProxy 了解 .NET 的初学者,并考虑到那里有很多代理库。

    【讨论】:

      猜你喜欢
      • 2012-07-23
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      相关资源
      最近更新 更多