.net中通過反射得到所有的私有欄位(包括父類)
在.net中,利用反射可以很容易獲取類的欄位,屬性和方法,不管是私有的,公有的還是受保護的,但如果一個類繼承了其它的類,想要獲取全部的屬性或欄位或方法似乎沒有直接的方法。通過參考Java並實際實踐,找到一個折中的辦法。Demo如下:
首先定義兩個類(Student繼承自People)
點選(此處)摺疊或開啟
public class People
{
private string _Name;
private string _Sex;
private string _Age;
public string Name
{
get { return this._Name; }
set { this._Name = value; }
}
public string Sex
{
get { return this._Sex; }
set { this._Sex = value; }
}
public string Age
{
get { return this._Age; }
set { this._Age = value; }
}
}
public class Student : People
{
private string _StuNo;
private string _SchoolName;
public string StuNo { get { return this._StuNo; } set { this._StuNo = value; } }
public string SchoolName
{
get { return this._SchoolName; }
set { this._SchoolName = value; }
}
}
通過反射取所有的私有欄位
點選(此處)摺疊或開啟
List<FieldInfo> fieldList = new List<FieldInfo>();
People stu = new Student();
Type type = stu.GetType();
FieldInfo[] fieldInfos = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance );
fieldList.AddRange(fieldInfos);
while((type = type.BaseType) != typeof(object))
{
fieldList.AddRange(type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance));
}
折中的地方是通過類的型別包含的BaseType屬性找到父型別,當父型別不是object時一直取所有的私有欄位並新增到List中即可。
權當記錄,以備後查。
相關文章
- 通過反射獲取私有內部類物件反射物件
- 【譯】7. Java反射——私有欄位和私有方法Java反射
- golang通過反射設定結構體欄位的值Golang反射結構體
- PHP通過反射來得到類,以及一些基本的應用PHP反射
- 反射-通過反射獲取私有構造方法並使用反射構造方法
- Java反射機制(得到所有的構造方法)Java反射構造方法
- ASP.NET Web API中通過URI顯示實體中的部分欄位ASP.NETWebAPI
- Scala類的屬性以及物件私有欄位物件
- C#通過反射獲取物件屬性,列印所有欄位屬性的值C#反射物件
- 逆向工程通過某個欄位排序排序
- 【譯】4. Java反射——欄位Java反射
- 共有的表單欄位屬性
- 比較所有的欄位型別型別
- Spring通過父類注入公用屬性的技巧Spring
- MSSql得到表的結構和欄位SQL
- 通過java反射,遞迴查詢物件所有屬性,為空也要返回欄位的結構Java反射遞迴物件
- 反射-通過反射越過泛型檢查反射泛型
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- DataGrid中通過CHECKBOX來修改庫裡某個欄位的值
- [bug]spring專案通過反射測試私有方法時,注入物件異常Spring反射物件
- 查詢某資料庫中所有的欄位資料庫
- 子父類中函式函式
- 通過idl得到.h檔案
- 通過反射獲取類的類名,方法和內部成員變數反射變數
- [提問交流]如何通過指令碼升級或新增OneThink獨立模型的欄位?指令碼模型
- 反射-通過反射執行配置檔案內容反射
- 鏈式-父類中返回子類物件物件
- 在SQL Server中修改欄位型別和欄位名稱的儲存過程SQLServer型別儲存過程
- 通過shell得到資料庫中許可權的指令碼資料庫指令碼
- 如何獲取java類中的欄位修飾符?Java
- 淺析如何通過PHP類的反射來實現依賴注入PHP反射依賴注入
- org.reflections 介面通過反射獲取實現類原始碼研究反射原始碼
- 面試題:多執行緒中棧與堆是公有的還是私有的?面試題執行緒
- 子類擁有父類物件所有的屬性和方法,但無法訪問物件
- 通過git安裝npm私有模組GitNPM
- .Net 中的反射(反射特性) - Part.3反射
- 揭秘Java反射:如何輕鬆獲取類的屬性及父類屬性Java反射
- json 按照欄位分類JSON