我今天在WCF合同中遇到过这个问题:
[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; }
IsRequired = True
和可空DateTime
的后果是什么?他们似乎彼此矛盾。
答案 0 :(得分:9)
如果要使用null初始化它并让用户设置有效日期,这是有意义的。因此,在提交之前,它可以验证用户输入。
这是一个类似的矛盾,可以回答你的问题。
DataMemberAttribute属性具有IsRequired属性( 默认为false)。该属性指示是否为给定的数据成员 在反序列化时,必须存在于序列化数据中。 如果IsRequired设置为true,则表示值必须为 现在)和EmitDefaultValue设置为false(表示 如果设置为默认值,则默认值不得出现 由于结果,无法序列化此数据成员的值 会是矛盾的。如果此类数据成员设置为其默认值 值(通常为null或0)并尝试序列化,a 抛出SerializationException。
答案 1 :(得分:3)
猜测:你必须有一个'LastModified'节点(=必需),但内容可以为空(= value为null)。