首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF DataContract -标记成员IsRequired=false

WCF DataContract -标记成员IsRequired=false
EN

Stack Overflow用户
提问于 2009-10-14 14:50:14
回答 2查看 6.4K关注 0票数 5

我有一份合同如下:

代码语言:javascript
复制
[DataContract]
public class MyObj
{
    [DataMember(IsRequired=true)]
    public string StrA {get; private set;}

    [DataMember(IsRequired=false)]
    public string StrB {get; private set;}
}

IsRequired到底是什么意思?IsRequired=false是否意味着我可以在StrB单一化的情况下传递MyObj的实例,或者这意味着我可以在没有StrB的情况下传递MyObj的实例?

如果是后者,我如何在没有StrB的情况下跨MyObj实例实例化+发送

EN

回答 2

Stack Overflow用户

发布于 2009-10-14 14:53:53

DataMember的IsRequired告诉序列化引擎StrB的值是否必须在底层XML中显示。

因此,您可以通过网络获取<MyObj></MyObj>,它将很好地反序列化为MyObj实例。

编辑:如果没有StrB,你实际上不能初始化MyObj的实例。它的用途是兼容性和可扩展性。例如,可能客户端没有更新的MyObj版本,也没有StrB。在这种情况下,服务器代码可以将StrB标记为不需要,并且在服务器端收到消息时不会出现序列化异常。

票数 3
EN

Stack Overflow用户

发布于 2009-10-14 16:12:00

我如何在没有StrB的情况下实例化+发送一个MyObj实例?

正如我在WCF and Anonymous Types中提到的,您可以使用DataMember(EmitDefaultValue=false)。这将确保当数据成员为其默认值时(例如,字符串为null ),它不会被发出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1566803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档