我有一个xml架构,其类型定义如下:
<xs:complexType name="InteractiveWorkflowAddress">
<xs:sequence>
<xs:element name="endpointAddresses" nillable="true" type="q1:ArrayOfstring" xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
<xs:element name="instanceId" type="ser:guid" />
</xs:sequence>
</xs:complexType>
其中ArrayOfstring类型定义为
<xs:complexType name="ArrayOfstring">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="ArrayOfstring" nillable="true" type="tns:ArrayOfstring" />
如何使用DataContract属性反序列化InteractiveWorkflowAddress
类型?我尝试了以下
[DataContract(Namespace = Constants.Namespace)]
public class InteractiveWorkflowAddress {
[DataMember()]
public string[] EndpointAddresses;
[DataMember()]
public string InstanceId;
}
但正确地反序列化InstanceId
成员时,EndpointAddresses
始终为空。
答案 0 :(得分:0)
了解如何对某些内容进行反序列化的最佳方法是首先进行序列化。序列化InteractiveWorkflowAddress数据结构并查看XML是否已创建。您可以使用List而不是string [] - 并且您还可以使用[XmlArray(...)]和[XmlArrayItem(...)]控制序列化 - 这也可能有所帮助。
这种简单的方法可能会做一些快速的反复试验,通过:进行更改,序列化类,查看输出 - 然后重复。希望有所帮助!