.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中即可。
權當記錄,以備後查。
相關文章
- java透過反射統計實體類和父類中為空的欄位數量Java反射
- 通過反射獲取私有內部類物件反射物件
- PHP通過反射來得到類,以及一些基本的應用PHP反射
- public 和私有類欄位[雙語]
- Drupal 如何得到欄位的值?
- 逆向工程通過某個欄位排序排序
- 共有的表單欄位屬性
- 通過java反射,遞迴查詢物件所有屬性,為空也要返回欄位的結構Java反射遞迴物件
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- [bug]spring專案通過反射測試私有方法時,注入物件異常Spring反射物件
- 包括clob segment 大欄位 表的大小統計
- .Net 中的反射(反射特性) - Part.3反射
- springboot中controller返回實體類中過濾掉等於null或為空的欄位Spring BootControllerNull
- 子父類中函式函式
- org.reflections 介面通過反射獲取實現類原始碼研究反射原始碼
- 淺析如何通過PHP類的反射來實現依賴注入PHP反射依賴注入
- 搭建私有的Composer倉庫
- 揭秘Java反射:如何輕鬆獲取類的屬性及父類屬性Java反射
- 子類擁有父類物件所有的屬性和方法,但無法訪問物件
- iOS 通過runtime獲取某個類中所有的變數和方法iOS變數
- 透過JPA註解獲取某個類主鍵欄位
- 如何獲取java類中的欄位修飾符?Java
- 鏈式-父類中返回子類物件物件
- 通過月份得到本月有幾天週末
- .NET 反射反射
- Scala的類、屬性、物件欄位物件
- java中父類宣告子類例項化Java
- Unity通過子物件獲取父物件例子Unity物件
- 通過Geth搭建私有以太坊網路
- java關於繼承父類,需要實現父類中的構造方法Java繼承構造方法
- 《NET CLR via C#》---第七章(常量,讀/寫欄位,可讀欄位)C#
- ViewPager(通過反射修改viewpager切換速度)Viewpager反射
- 泛微oa流程表單之明細表欄位通過文字輸入內容使另外一個欄位必填
- 子父類中成員變數變數
- Java中的類反射機制Java反射
- Dynamics CRM 通過配置來設定查詢欄位的預設檢視
- U-net基礎入門(包括糾錯過程)
- [轉載] python通過反射執行程式碼Python反射行程
- 通過反射認識泛型的本質反射泛型