【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.pswp.cn/diannao/35738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/35738.shtml
英文地址,請注明出處:http://en.pswp.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思想實現數據的雙向綁定…