我的一个客户拥有他想要发送给我们正在创建的服务的XML数据。示例消息可能如下所示:
<SomeRootElement>
<Dates>
<Date>2012-05-20T00:00:00</Date>
<Date>2012-05-21T00:00:00</Date>
</Dates>
</SomeRootElement>
我的WCF服务应用程序上有一个定义为DataContract
的相应类型:
[DataContract]
public class SomeRootElement {
[DataMember]
public ICollection<DateTime> Dates { get; set; }
}
问题在于,基于此定义,WCF希望Dates
集合看起来像:
<Dates>
<dateTime>2012-05-20T00:00:00</dateTime>
<dateTime>2012-05-21T00:00:00</dateTime>
</Dates>
有没有办法影响数组项的序列化元素名称?过去使用XML序列化属性很容易,但DataContractSerializer
忽略了这些属性。
答案 0 :(得分:3)
这应该可以解决问题:
[DataContract]
[KnownType(typeof(DateList))]
public class SomeRootElement {
[DataMember]
public ICollection<DateTime> Dates { get; set; }
}
[CollectionDataContract(ItemName="date")]
public class DateList : Collection<DateTime> {}
您将覆盖它可用于反序列化自定义ICollection的类型。