2016年7月4日 星期一

如何使用 GetField 來動態取得或設定物件的值 / How do I use "GetField" to dynamically get or set the value of an object ?

先前在某一個情境下,需要動態來取得或設定某個物件的值。
假設有一個 Class 如下:
public class TestObject()
{
    string A1;
    string A2;
    string A3;
}

如上面的 Class,我要用變數來存取 TestObject 內的 A2 的值。

這時候要怎麼做呢?

先初始化物件,這大家應該都會的:
TestObject testObject = new TestObject();

然後宣告這個 Object 的 Type:
Type testType = testObject.GetType();

接下來就可以順利的取得 testObject.A2 的值:
string val = (string) testType.GetField("A2").GetValue(testObject);

如果要變更 testObject.A2 的值也是可以:
testType.GetField("A2").SetValue(testObject, "new value");

沒有留言:

張貼留言

Surface pro 6降頻至0.4GHz的解決方式

網路查到很多都說: 按住電源鍵30秒關機、再同時按住電源鍵+音量上鍵15秒重啟,解決。 實際試過是有效,但某一天看到當配件溫度過高,也是會造成降頻的原因之一, 索性就把電源線拔掉,神奇的事情發生了~~ cpu頻率就正常了 。 但其實當下電源供應器並沒有發熱的現象,只...