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

欢迎来到《小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://www.mzph.cn/diannao/35738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IPFoxy Tips:匿名海外代理IP的使用方法及注意事项

在互联网上,隐私和安全问题一直备受关注。为了保护个人隐私和数据安全,使用匿名代理IP是一种常用的方法。匿名代理IP可以隐藏用户的真实IP地址,使用户在访问网站时更加隐秘和安全。 本文将介绍匿名代理IP的基本原理和核心功能。 基本原则 匿…

2024期权交易佣金手续费最低是多少?期权交易有哪些成本?

显性成本 期权交易的显性成本包含期权交易的佣金和交易所费用,分别支付给券商和交易所,统一由券商代收。 佣金 期权佣金是期权交易时支付给券商的费用,佣金通常以交易金额的一定比例计算,可以是固定费用,也可以是滑…

用两个钟,我又在VMWARE上搞了一套内部网配置

最近要学es,所以打算自己用虚拟机搞个NAT,又搞了两个钟。为了不再费劲尝试,也为了造福大众,所以选择搞一份NAT笔记!!!! 1.初始化网关和DNS 我们给网关配置一个地址192.168.96.1&…

【多模态】BEiT v2

链接:https://arxiv.org/pdf/2208.06366 论文:BEIT V2: Masked Image Modeling with Vector-Quantized Visual Tokenizers Introduction Motivation:Masked image modeling (MIM) 任务在自监督表征学习上取得了不错的成绩,但是现…

教师资格证考试面试报名流程

文章目录 前言面试报名流程一、登录官网二、选择报考省份三、注册报名账号四、确认考试承诺五、填报个人信息六、上传个人照片七、查看个人信息八、面试报名九、等待审核十、考试缴费最后(必看)附录1. 中小学教师资格考试网2. 广东省教资考试报名通知&am…

Linux加固-权限管理_chattr之i和a参数

一、参数i i:如果对文件设置了i属性,不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置了i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。(相当于把文件给锁住了,…

【Mysql】多表、外键约束

多表 1.1 多表简述 实际开发中,一个项目通常需要很多张表才能完成。 例如一个商城项目的数据库,需要有很多张表:用户表、分类表、商品表、订单表… 1.2 单表的缺点 1.2.1 数据准备 创建一个数据库 db3 CREATE DATABASE db3 CHARACTER SET utf8;数据库…

Segment any Text:优质文本分割是高质量RAG的必由之路

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

基于qemu_v8 + optee400构建自定义app

构建基于libckteec的tls安全通信应用程序,应用目录结构 $ tree -L 2 . ├── libp11 │ ├── libp11-libp11-0.4.12 │ ├── mk_optee_three_part.sh │ └── out ├── openssl │ ├── mk_optee_three_part.sh │ ├── openssl-1.1.1w │ …

vue项目中封装element分页组件

我们都知道封装组件是为了方便在项目中使用,全局封装之后哪个模块使用直接复制就行了,分页在后台项目中用到的地方也是很多的,所以我们就全局封装一下分页组件,以后也方便在项目中使用,接下来封装的这个分页也是elemen…

clean code-代码整洁之道 阅读笔记(第十四章)

第十四章 逐步改进——对一个命令行参数解析程序的案例研究 ps:本章设计代码示例所以篇幅会较长,推荐直接看原文,思路、代码讲解的很清楚 本章示例:解析命令行参数的工具 —— Args Args的简单用法 public static void main(Stri…

vue中动态绑定样式名的方式有几种?

在Vue中可以使用动态绑定样式名的方式有几种,具体取决于你的需求和使用的场景。 使用对象语法: 可以通过在data中定义一个变量,然后在模板中使用对象语法来动态绑定样式名。 <template><div :class="{ active: isActive }">Hello Vue!</div> &l…

网络文化经营许可证(文网文)办理全面讲解

随着互联网时代的飞速发展&#xff0c;互联网早已渗透到人们的生活中&#xff0c;各类直播、短视频成为大家生活娱乐必不可少的一部分。注册一家从事互联网行业的企业是一个不错的选择。那互联网企业需要办理什么证件资质呢&#xff1f;在互联网行业从事盈利文化活动必须持有网…

【精品方案】智能制造之路(93页PPT)

引言&#xff1a;智能制造之路&#xff1a;革新制造业的引领之旅 随着科技的迅猛发展&#xff0c;特别是人工智能、物联网、大数据等技术的不断进步&#xff0c;制造业正迎来一场深刻的变革。智能制造&#xff0c;作为这场变革的核心&#xff0c;正逐步成为推动产业升级和转型发…

MySQL为什么不建议使用多表JOIN

一、典型回答 之所以不建议使用JOIN查询&#xff0c;最主要的原因就是JOIN的效率比较低。 MySQL是使用了嵌套循环&#xff08;Nested-Loop Join&#xff09;的方式实现关联查询的&#xff0c;简单点说就是要通过两层循环&#xff0c;用第一张表做外循环&#xff0c;第二张表做内…

大模型课程资料-全网最火29套全栈大模型项目实践

29套AI全栈大模型项目实战&#xff0c;人工智能视频课程-多模态大模型&#xff0c;微调技术训练营&#xff0c;大模型多场景实战&#xff0c;AI图像处理&#xff0c;AI量化投资&#xff0c;OPenCV视觉处理&#xff0c;机器学习&#xff0c;Pytorch深度学习&#xff0c;推荐系统…

【LLM】一分钟带你了解Agent工作流四范式

文章目录 1. 大模型直接生成-generation2. 大模型充当工具使用-tool3. 大模型执行思维链-Planning4. 多大模型Agent合作-multiagent collaboration 1. 大模型直接生成-generation 通过提示词&#xff0c;大模型直接生成想要的结果&#xff1a; 2. 大模型充当工具使用-tool …

无人机在农业方面应用的局限性

无人机在农业方面的应用虽然带来了许多便利和效率提升&#xff0c;但也存在一些局限性。以下是对这些局限性的清晰归纳和分点表示&#xff1a; 飞行受限&#xff1a; 无人机在飞行过程中受到一定限制&#xff0c;例如在森林、城市等复杂地形或建筑物密集区域&#xff0c;其空间…

拥抱数字化未来,如何以费控驱动业务发展?

管理费用是企业运营中仅次于人力成本的第二大可控成本&#xff0c;一般会占到企业年度收入的5%—10%&#xff0c;但多数企业存在费用疏于管理、费用管理制度流于纸面难落地、费用浪费严重等问题。 如果不进行科学管理&#xff0c;有专家表示&#xff0c;估计企业每年至少有10%的…

vue总结

1.什么是VUE? Vue就是一套用于构建用户界面的渐进式框架,与其他框架不同的是,Vue被设计为可以自底向上逐渐应用.Vue的核心库只关注图层,不仅容易上手,还便于与第三方库或既有项目整合. 2.Vue的优点 体积小 高效率 双向数据绑定,简化Dom操作 通过MVVM思想实现数据的双向绑定…