今天我在 WCF 合同中遇到了这个:
[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; }
IsRequired = True
和可空的 DateTime
有什么后果?它们似乎相互矛盾。
今天我在 WCF 合同中遇到了这个:
[DataMember(IsRequired = true)]
public DateTime? LastModified { get; set; }
IsRequired = True
和可空的 DateTime
有什么后果?它们似乎相互矛盾。
如果您希望将其初始化为null并允许用户设置有效日期,则这是有意义的。因此,在提交之前,它可以验证用户输入。
以下是一个类似的矛盾问题,可能可以回答您的问题。
DataMemberAttribute属性具有IsRequired属性(默认值为false)。该属性指示在反序列化时是否必须存在给定数据成员的序列化数据。如果IsRequired设置为true(表示必须存在值),并且EmitDefaultValue设置为false(表示如果将其设置为默认值,则不必存在该值),则无法序列化此数据成员的默认值,因为结果会矛盾。如果将此类数据成员设置为其默认值(通常为null或零)并尝试进行序列化,则会抛出SerializationException异常。