Wcf 从MessageDescription创建消息

Wcf 从MessageDescription创建消息,wcf,wsdl,message,Wcf,Wsdl,Message,我试图仅使用用户提供的一组参数和通过从WCF中的OperationDescription对象提取输入消息而解析的MessageDescription来创建消息 它看起来很简单,但我似乎找不到有关如何使用Body.WrapperElementName和MessageDescription中描述的各种消息部分等设置的信息 是否有任何WCF专家可以帮助我了解这个相当复杂的问题?我不认为这个功能实际上是像那样直接公开的 我没有尝试过这一点,但花了一点时间使用reflector,如果您不介意弄脏双手并使用

我试图仅使用用户提供的一组参数和通过从WCF中的OperationDescription对象提取输入消息而解析的MessageDescription来创建消息

它看起来很简单,但我似乎找不到有关如何使用Body.WrapperElementName和MessageDescription中描述的各种消息部分等设置的信息


是否有任何WCF专家可以帮助我了解这个相当复杂的问题?

我不认为这个功能实际上是像那样直接公开的

我没有尝试过这一点,但花了一点时间使用reflector,如果您不介意弄脏双手并使用一点反射,一个选项可能是使用()创建System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter类的新实例,该类实现了接口的

以下是构造函数的参数:

  • 操作说明
  • DataContractFormatAttribute DataContractFormatAttribute
  • DataContractSerializePropertyBehavior serializerFactory
请注意,在任何情况下,您都需要完整的OperationDescription对象,但看起来您在任何情况下都可以访问它


然后,只需调用()。

如果可以创建[MessageContract]类型来表示消息,那么可以使用TypedMessageConverter类

或者,您可以使用DataContractSerializerOperationBehavior执行此操作。您需要“弄脏”一些存根,例如操作说明

为了了解MessageDescription本身以及其中的各种参数,我建议您创建一个[ServiceContract]接口,如您希望看到的,然后使用ContractDescription.GetContract加载ContractDescription并检查MessageDescriptions对象。您可以看到WCF使用什么作为默认值等


如果您对特定属性有疑问,我可能会提供帮助。

谢谢您的指点。我要试试看。而且,由于我使用的是dynamic,它已经非常慢了,所以任何更多的反射都不会有任何影响;)试过了,效果不错。目前它失败了,因为我在DynamicObject派生类中使用了错误的参数类型和返回类型,但我已经做到了。我可以创建该类型的新实例,并使用该实例序列化操作的参数。