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

发布于 2024-12-10 08:11:39 字数 218 浏览 0 评论 0原文

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

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

IsRequired = True 和可为空的 DateTime 会产生什么后果?它们似乎是相互矛盾的。

I came across this today in a WCF contract:

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

What are the consequences of IsRequired = True and a nullable DateTime? They appear to be contradictory to each other.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

压抑⊿情绪 2024-12-17 08:11:39

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

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

与 IsRequired 交互

DataMemberAttribute 属性有一个 IsRequired 属性(
默认为假)。该属性指示给定的数据成员是否
反序列化时必须存在于序列化数据中。
如果 IsRequired 设置为 true(这表明值必须是
存在)并且 EmitDefaultValue 设置为 false(表明
如果设置为默认值,则该值不得存在),默认
该数据成员的值无法序列化,因为结果
会很矛盾。如果这样的数据成员设置为其默认值
值(通常为空或零)并尝试序列化,
抛出 SerializationException。

It can make sense if you want to initialize it with null and let user to set a valid date. So before submitting it can validate user input.

Here is a similar contradictory that may answer your question.

Interaction with IsRequired

The DataMemberAttribute attribute has an IsRequired property (the
default is false). The property indicates whether a given data member
must be present in the serialized data when it is being deserialized.
If IsRequired is set to true, (which indicates that a value must be
present) and EmitDefaultValue is set to false (indicating that the
value must not be present if it is set to its default value), default
values for this data member cannot be serialized because the results
would be contradictory. If such a data member is set to its default
value (usually null or zero) and a serialization is attempted, a
SerializationException is thrown.

回忆躺在深渊里 2024-12-17 08:11:39

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

A guess: you MUST have a node for 'LastModified' (=required) but the contents can be empty (=value is null).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文