DataMember IsRequired属性是否与Nullable类型相矛盾?

问题描述 投票:15回答:2

我今天在WCF合同中遇到过这个问题:

[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; } 

IsRequired = True和可空的DateTime有什么后果?他们似乎彼此矛盾。

c# .net wcf datamember isrequired
2个回答
9
投票

如果你想用null初始化它并让用户设置一个有效的日期,这是有意义的。所以在提交之前它可以验证用户输入。

这是一个类似的矛盾,可以回答你的问题。

Interaction with IsRequired

DataMemberAttribute属性具有IsRequired属性(默认值为false)。该属性指示在序列化数据被反序列化时是否必须存在给定数据成员。如果IsRequired设置为true,(表示必须存在值)并且EmitDefaultValue设置为false(表示如果将值设置为其默认值,则该值不得出现),此数据成员的默认值不能为序列化因为结果会相互矛盾。如果将此类数据成员设置为其默认值(通常为null或0)并尝试进行序列化,则抛出SerializationException。


3
投票

猜测:你必须有一个'LastModified'节点(=必需),但内容可以为空(= value为null)。

© www.soinside.com 2019 - 2024. All rights reserved.