C#反射獲取某個類的欄位屬性方法
阿新 • • 發佈:2018-10-31
在LitJson裡面有個類是JsonMapper 對映
有些方法
public static T ToObject<T>(JsonReader reader);
public static T ToObject<T>(TextReader reader);
public static T ToObject<T>(string json);
//使用以上的方法要注意 T類中 欄位或者屬性名字 必須是公開的 且和json中的key值保持一致; 如果資料很多可以用List<T>
或者 T[ ] 來取得。
就是通過Reflection 反射 取得 欄位 或者屬性,進行匹配的
下面是 泛型類通過反射 去得欄位屬性的方法 可以傳個string 進行處理。
public static void PrintAttr<T>() where T :new() { T a = default(T); a = new T(); Type t = a.GetType(); //都是公共的 FieldInfo[] fieldInfos = t.GetFields();//欄位 PropertyInfo[] propertyInfos = t.GetProperties();//屬性 MethodInfo[] methodInfos = t.GetMethods();//方法 WriteLine("屬性個數:" + propertyInfos.Count()); foreach (PropertyInfo pInfo in propertyInfos) { WriteLine("屬性:" + pInfo.ToString()); } WriteLine("欄位總數:" + fieldInfos.Count()); foreach (var item in fieldInfos) { WriteLine("欄位" + item.ToString()); //獲取欄位 } WriteLine($"方法總數:{ methodInfos.Count()}"); foreach (MethodInfo item in methodInfos) { WriteLine($"方法:{item.ToString()}"); } WriteLine(t.Assembly); }