【问题标题】:Readonly DataContract只读数据合约
【发布时间】:2014-12-26 00:00:26
【问题描述】:

如果我将 DataContract 的属性设为只读,会有什么不同?如下所示。

[DataContract]
public class data
{
  [DataMember]
  public string datestring 
  { 
     get { return DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss"); } 
  }
  //
  // Other proprties
  //
}

我对 WCF 服务的 Jquery 请求每次都被中止,当我删除这个只读属性时它起作用了。那么为什么我不能在 WCF 服务的 DataContract 中创建这样的属性呢?

【问题讨论】:

    标签: c# jquery .net wcf


    【解决方案1】:

    虽然没有解释原因,但DataMemberAttribute Class 的文档指出:

    “已应用 DataMemberAttribute 属性的属性必须同时具有 get 和 set 字段;它们不能是 get-only 或 set-only。”

    编辑

    我很好奇为什么会这样,所以做了一些搜索。我在论坛上遇到过这个:

    “它需要被获取/设置,以便在跨应用程序边界传输时可以分配值。” (取自here)。

    该论坛帖子的作者还表示您可以在该属性上使用私有 setter 来解决此问题:

    [DataMember]
    public string datestring
    {
        get
        {
            return DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss"); 
        }
        private set
        {
        }
    }
    

    请注意,上面的代码未经测试,但应该可以工作。

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2023-03-14
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 2022-08-14
      • 1970-01-01
      相关资源
      最近更新 更多