簡體   English   中英

通過反射設置變量

[英]Setting variable through reflection

我嘗試設置一個變量值,知道它的名稱是一個字符串,例如:

//JAVASCRIPT version
myObj["varName"] = someValue;

在stackoverflow.com上閱讀了一些其他答案后,我發現了以下解決方案

// C# version
myObj.GetType ().GetProperty ("varName").SetValue (myObj, someValue, null);

編譯它會給我一個NullReference異常,盡管我可以清楚地看到我的類具有一個名稱完全相同的公共變量。

我是C#的新手,可能會丟失一些東西,如果有人可以指出我的錯誤,我將不勝感激。

根據您的描述, myVar是一個字段。 因此,您需要使用GetField而不是GetProperty

如果變量是一個字段,這應該可以解決問題:

myObj.GetType().GetField("varName", BindingFlags.Instance | BindingFlags.Public).SetValue(myObj, someValue, null);

如果是屬性:

myObj.GetType().GetProperty("varName", BindingFlags.Instance | BindingFlags.Public).SetValue(myObj, someValue, null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM