不需要 WCF DataMember 时

Posted

技术标签:

【中文标题】不需要 WCF DataMember 时【英文标题】:When WCF DataMember Is Not Required 【发布时间】:2012-01-03 14:13:14 【问题描述】:

我的 DataContract 类中有以下两个公共属性。

我想在客户端使用它。但我不想通过服务退回这个。我不需要 MyDateString 的 DataMember 属性吗?

    [DataMember]
    public DateTime MyDate  get; set; 

    public string MyDateString
    
        get
        
            return MyDate.ToString("dd/MM/yyyy");
        
    

【问题讨论】:

【参考方案1】:

如果您希望它在您的服务边界上正确序列化,您需要使用 DataMember 来装饰它。

如果您希望它用于服务内部的逻辑,并且您不希望在从服务返回此类时该值可用,那么您不应该使用 DataMember 属性来装饰它。

【讨论】:

【参考方案2】:

您需要[DataMember] 仅用于您想要序列化的成员。由于MyDateString 将按预期运行而无需序列化(MyDateString 所依赖的支持属性 MyDate已经序列化),因此您不需要在该属性上使用它。

【讨论】:

以上是关于不需要 WCF DataMember 时的主要内容,如果未能解决你的问题,请参考以下文章

将 DataMember 添加到 WCF 中的现有 DataContract

有没有办法在 WCF 的数据合同中使用 DataMember 装饰多个属性?

WCF:属性与成员的 DataMember 属性

将 WCF 项目从 VS 2008 移植到 2010 时出错

wcf 如何为 SOAP Web 服务设置不可为空的 DataMember

为啥不推荐使用 [DataMember(EmitDefaultValue = false)]?