常見的使用反射的場景:
程序在運行時動態地訪問類的成員,如獲得類的變量、方法。
例如:用反射給本類的變量賦值。
public class Student{
public string studentName = "小王";
public void Test()
{
Type type = this.GetType(); // 獲得本類的類型
PropertyInfo propertyInfo = type.GetProperty("studentName"); // 獲得本類的成員變量
propertyInfo.SetValue(this, "老王"); // 修改本類的成員變量
}
}
上面的代碼,運行Test()方法後,能夠重新給本類的變量賦值。通常經過別的操作得到新的值,然後將新的值做爲參數傳入該方法。
使用反射和泛型,可以使得接口類的設計通用型更強,但會降低代碼可讀性。報錯時得Debug來一步步調試來看運行時反射得到是數據類型。
其他反射使用場景:獲得類的方法並調用等。
學習: