你不知道C#只带有 Get 访问器的属性是只读属性?

本文转载自微信公众号「UP技术控」,不知作者conan5566  。只带只读转载本文请联系UP技术控公众号。访问

问题窥探

之前有个哥们在使用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 访问器更改对象的状态是一种错误的编程样式。亿华云

滇ICP备2023000592号-31