問題窺探
之前有個哥們在使用Newtonsoft.Json反序列化的時候,發現明明有數據,但是就是序列化不出來數據到實體里面。
咋一看,確實沒什么問題啊,字符串的數據是存在的。那么問題出在哪里呢。
解決思路
1、我讓他把字符串復制出來,使用在線工具解析下,和實體對應的名稱核對看下是否有出入。發現確實沒問題。
2、於是我讓他把實體文件發我下。
我查看了下,名稱確實沒問題。等等,這屬性 public ListData { get; }?
/// <summary> /// 跟蹤信息頭 /// </summary> public class O { /// <summary> /// 業務數據。 /// </summary> [JsonProperty("data")] public List<TraceDto> Data { get; } /// <summary> /// 狀態。 /// </summary> [JsonProperty("status")] public int Status { get; } ///// <summary> ///// 異常消息。 ///// </summary> //[JsonProperty("msg")] //public string Message { get; } }
於是,我讓他這么干。
{ get; }=>{ get; set; }
問題解決。
總結
屬性按如下方式,根據所使用的訪問器進行分類:
只帶有 get 訪問器的屬性稱為只讀屬性。無法對只讀屬性賦值。
只帶有 set 訪問器的屬性稱為只寫屬性。只寫屬性除作為賦值的目標外,無法對其進行引用。
同時帶有 get 和 set 訪問器的屬性為讀寫屬性。
在屬性聲明中,get 和 set 訪問器都必須在屬性體的內部聲明。
使用 get 訪問器更改對象的狀態是一種錯誤的編程樣式。