System.Reflection.Emit为Silverlight 4实现WebChannelFactory?

时间:2011-06-05 17:10:32

标签: wcf rest reflection silverlight-4.0 reflection.emit

这个问题跟随别人的问题,因为提问者从未接受或说过他的问题的解决方案,如果他找到了。

What's the most portable way to make a Silverlight & Regular .NET REST client

如果您熟悉.NET中的WebChannelFactory,它提供了一种创建客户端以访问WCF Web Http(REST)服务的简洁方法。 Silverlight 4中没有这样的类,因此创建一个类似于它的类可能是值得的。

如何开始创建类,创建一个实现服务合同的客户端(TChannel)?我不知道微软是如何做到这一点的,但看起来它们在运行时以某种方式创建了一个新的Type来实现该接口。你会在Silverilght这样做吗?也许通过查看System.Reflection.Emit和TypeBuilder.AddInterfaceImplementation

我遇到的一个更具体的System.Reflection.Emit问题是,如果你想使用现有的编译代码,使用MethodBuilder为你的TypeBuilder创建方法的最简单方法是什么?看起来您可以使用MethodBuilder.CreateMethodBody,但是,在Silverlight 4中,这不存在。

2 个答案:

答案 0 :(得分:2)

首先,WebChannelFactory不是构建REST客户端的简洁方法 - 这是完全无REST的方法,因为它要求您共享服务和客户端之间的所有合同。存在WebChannelFactory以提供与标准WCF服务客户端的兼容性,并以某种方式(错误地)简化调用.NET编写的REST服务。这也是MS如何做到的答案 - 没有类型的运行时创建。类型是在设计时定义的。

答案 1 :(得分:0)

这是一篇很好的文章。我决定创建一个类,简化调用REST WCF服务并更加贴近我的需求。也许其他人会发现它很有用。

WebHttpClient