1. 程式人生 > >反射的一些操作

反射的一些操作

  • 反射建立一個類

dynamic o=System.Reflection.Assembly.Load("程式集名稱(不含檔案字尾名)").CreateInstance("名稱空間.類名", false);

  • 反射獲取所有欄位,包括父類的私有欄位

var fi = new List<FieldInfo>();
fi.AddRange(type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static));
while ((type = type.BaseType) != typeof(object))
{
fi.AddRange(type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static));
}

  • 物件.GetType().Name

GetType()的定義如下

public Type GetType();

應用場景:根據子類的型別,來進行某些操作。在父類裡來一個if(this.GetType().Name==typeString),裡面就可以接相應操作了。

特別是子類特別多的時候,將子類的型別和一些資料從XML檔案裡讀出來,爽歪歪。