15

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

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

IsRequired = True和 nullable的后果是什么DateTime?它们似乎相互矛盾。

4

2 回答 2

8

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

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

与 IsRequired 的交互

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

于 2011-10-14T11:40:26.933 回答
3

一个猜测:您必须有一个“LastModified”节点(=必需),但内容可以为空(=值为空)。

于 2011-10-14T11:16:32.240 回答