gpt4 book ai didi

c# - DTO 的自定义数组项名称

转载 作者:行者123 更新时间:2023-11-30 22:28:39 25 4
gpt4 key购买 nike

我的一个客户有 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 会忽略这些。

最佳答案

这应该可以解决问题:

[DataContract]
[KnownType(typeof(DateList))]
public class SomeRootElement {
[DataMember]
public ICollection<DateTime> Dates { get; set; }
}

[CollectionDataContract(ItemName="date")]
public class DateList : Collection<DateTime> {}

您正在覆盖它可用于反序列化自定义集合的 ICollection 的类型。

关于c# - DTO 的自定义数组项名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com