0

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

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

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

4

2 回答 2

0

我不认为这个功能实际上是直接暴露的。

我还没有尝试过,但是花了一些时间在反射器上,如果你不介意弄脏你的手并使用一点反射,一个选择可能是使用Activator.CreateInstance () 创建一个新的实例System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter 类,它实现了IClientMessageFormatter接口。

以下是构造函数的参数:

  • 操作描述说明
  • DataContractFormatAttribute dataContractFormatAttribute
  • DataContractSerializerOperationBehavior 序列化程序工厂

请注意,在任何情况下,您都需要完整的 OperationDescription 对象,但看起来您在任何情况下都可以访问它。

然后,只需调用SerializeRequest () 即可。

于 2009-11-07T00:22:06.673 回答
0

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

或者,您可以使用 DataContractSerializerOperationBehavior 执行此操作。您需要“整理”一些存根,例如 OperationDescription。

在了解 MessageDescription 本身以及那里的各种参数方面,我建议创建一个您想要看到的 [ServiceContract] 接口,然后使用 ContractDescription.GetContract 加载 ContractDescription 并检查 MessageDescriptions 对象。您可以查看 WCF 用于默认值等的内容。

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

于 2009-11-07T04:51:25.740 回答