当前位置:首页 » 《休闲阅读》 » 正文

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

23 人参与  2024年10月18日 13:21  分类 : 《休闲阅读》  评论

点击全文阅读


欢迎来到《小5讲堂》
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!
在这里插入图片描述

背景

找不到属性集方法。get只读属性用了反射设置setValue肯定报错

报错分析

实体类成员,进行反射时,只读成员是无法进行设置值的。
下面图中,update_time设置了get只读,只能获取值,无法设置值,因此在进行反射设置值时就报错了。
在这里插入图片描述
在这里插入图片描述

get和set

在C#中,get 和 set 是用于定义属性(properties)的关键字。
1.get
用于获取属性的值。当代码尝试访问属性的值时,会调用 get 方法来返回该值。
2.set
用于设置属性的值。当代码尝试给属性赋值时,会调用 set 方法来存储该值。
通过使用属性,可以控制对类的字段(fields)的访问,使其更加安全和可控。例如,可以在 set 方法中添加验证逻辑,以确保属性值符合特定的条件。
下面是一个简单的示例,展示了如何在C#中使用 get 和 set:

public class Person{    private string name;    // 定义属性 Name,具有 get 和 set 方法    public string Name    {        get        {            return name; // 获取属性值        }        set        {            if (!string.IsNullOrEmpty(value)) // 设置属性值前进行验证            {                name = value; // 设置属性值            }            else            {                throw new ArgumentException("Name cannot be null or empty");            }        }    }}

在上面的示例中,Name 属性具有 get 和 set 方法。当调用 person.Name 时,会调用 get 方法来获取属性值;当调用 person.Name = “John” 时,会调用 set 方法来设置属性值为 “John”。

反射用法

在C#中,反射(Reflection)是一种强大的技术,允许在运行时获取类型的信息,并动态操作它们的成员(如属性、方法、字段等)。使用反射,可以在不知道具体类型的情况下,仍能够调用类型的成员、创建对象或修改对象的行为。主要的反射类都位于 System.Reflection 命名空间中。

以下是一些反射技术常见的用途和功能:
1.获取类型信息
可以通过反射获取类型的名称、命名空间、方法、属性、字段等详细信息。例如,使用 typeof 操作符或 GetType() 方法来获取类型的 Type 对象。

2.动态创建对象
可以使用反射来动态创建类的实例。通过 Activator.CreateInstance 方法或者 Type 类的 GetConstructor 方法结合 Invoke 方法,可以在运行时创建对象。

3.调用成员
可以使用反射来调用类的方法、获取和设置属性的值,以及访问和修改字段。这些操作可以通过 GetMethod、Invoke、GetProperty、SetValue 等方法来完成。

4.获取和设置字段值
可以通过反射读取和修改类的字段值,即使字段是私有的也可以。

5.查找和调用特定类型的方法
可以根据方法的名称、参数类型等信息,通过反射动态调用特定的方法。

6.检查和应用属性和特性
可以通过反射读取类、方法或属性上的自定义特性(Attributes),并根据特性中的元数据来调整程序行为。

反射技术通常用于编写框架、插件系统、ORM(对象关系映射)库等需要动态处理和操作类型的场景。然而,由于反射操作相比静态调用会有一定的性能损耗,因此在对性能要求较高的场景中需要谨慎使用。

相关文章

【C#】pdf按页分割文件,以及分页合并,效果还不错,你值得拥有

【C#】未能加载文件或程序集“CefSharp.Core.Runtime.dll”或它的某一个依赖项。找不到指定的模块。

【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/173605.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1