我无法实现以下场景。
我们目前有一个方法,它需要一个“上下文”键值对列表。然而,该值可以是任何类型。
目标是使用 WCF 使此方法可用。所以我创建了一个
public List<Element> Transform(List<Element> elements)
{
... Transformation of elements takes place
}
[DataContract(Namespace = Constants.NAMESPACE)]
public struct Element
{
[DataMember(Order = 0, IsRequired = true)]
public string Key;
[DataMember(Order = 1, IsRequired = true)]
public object Value;
}
当我使用 .Net 测试项目时,一切正常。
但是,当我使用 SOAP UI 调用此服务时,我收到一条错误消息:
格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数元素时出错。InnerException 消息是“元素值不能将子内容反序列化为对象。请使用 XmlNode[] 反序列化这种 XML 模式。'。
我很难弄清楚该怎么做。任何帮助表示赞赏。
我使用的xml是这样的:
<ws:Transform>
<ws:elements>
<ws:Element>
<ws:Key>Key1</ws:Key>
<ws:Value>A</ws:Value>
</ws:Element>
<ws:Element>
<ws:Key>Key2</ws:Key>
<ws:Value>B</ws:Value>
</ws:Element>
<ws:ScriptName>SetVariable</ws:ScriptName>
</ws:elements>
</ws:Transform>