1. 程式人生 > >利用反射從C#字串獲取類的屬性值

利用反射從C#字串獲取類的屬性值

問題

在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() 就是得到該類的成員變數。