我正在开发一个 ASP.NET Web API 服务,它允许用户发布元数据。
在用户发布的数据合同之一中,他们应该能够以 XML 格式发布自己的自定义元数据。这是一个例子:
<Delivery> <Type>Direct</Type> <Time>12:00:01</Time> <Format>Segmented</Format> <CustomMetadata> <ClientReference>R46375683</ClientReference> <Contact>Me@There.com</Contact> </CustomMetadata> </Delivery>
但是,我无法创建成功正确反序列化的数据合约。对于 CustomMetadata 节点,我有:
[DataMember(EmitDefaultValue=false)]
public XmlNode CustomMetadata { get; set; }
当它被反序列化时,我收到一个异常:
“集合类型 'System.Xml.XmlNode' 无法反序列化,因为它没有有效的 Add 方法,参数类型为 'System.Object'。”
我不完全理解为什么它试图向 XmlNode 中“添加”任何东西,但无论出于何种原因,它都失败了。做这种事情是否有替代方法,例如反序列化为不同的类型?我尝试反序列化为字符串,但这也给出了异常。