利用反射從C#字串獲取類的屬性值
阿新 • • 發佈:2018-12-26
問題
在lua裡面能很容易的去利用字串去訪問屬性,但是在C#裡面有時候就很棘手,特別是在字串比較多的情況下。
方法
比如我們要讀取player表裡面的ID,Name,Age,Position。。。。。。
但是玩家表裡面會有很多資料,我們在以上四項是比較容易去讀的,但是有時候在比較複雜的情況下,我們只有“ID”,“Name”,“Age”,“Position”等字串,但是希望去讀取到屬性。
這個時候,就需要利用到C#的反射了。
var nameOfProperty = "ID";
var propertyInfo =player.GetType().GetProperty(nameOfProperty);
var value = propertyInfo.GetValue(player, null);
同時說一下typeof 和GetType()
都是為了獲取某個例項具體引用的資料型別System.Type。
1、GetType()方法繼承自Object,所以C#中任何物件都具有GetType()方法,x.GetType(),其中x為變數名
2、typeof(x)中的x,必須是具體的類名、型別名稱等,不可以是變數名稱
GetProperty() 就是得到該類的成員變數。