我尝试设置一个变量值,知道它的名字是一个字符串,例如:
//JAVASCRIPT version
myObj["varName"] = someValue;
在stackoverflow.com上阅读其他一些答案我找到了以下解决方案
// C# version
myObj.GetType ().GetProperty ("varName").SetValue (myObj, someValue, null);
编译这个会给我一个NullReference异常,虽然我可以清楚地看到我的班级有一个名字完全相同的 public 变量。
我是C#的新手并且可能遗漏了一些东西,如果有人能指出我的错误,我将不胜感激。
答案 0 :(得分:2)
根据您的说明myVar
是一个字段。因此,您需要使用GetField
而不是GetProperty
答案 1 :(得分:2)
如果变量是一个字段,这应该可以解决问题:
myObj.GetType().GetField("varName", BindingFlags.Instance | BindingFlags.Public).SetValue(myObj, someValue, null);
如果是属性:
myObj.GetType().GetProperty("varName", BindingFlags.Instance | BindingFlags.Public).SetValue(myObj, someValue, null);