Unity通过映射设置变量

我想设置一个变量值,知道它的名字是是个字符串,例如:

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

我在stackoverflow.com看了一些问答,找到如下解决方案:

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

尽管我清楚地看到class有着正确名字的公共变量,但这个编译给出了一个NullReference异常。
我刚开始学习C#,可能有什么地方出错了吧,请大家帮忙指出错误的地方,感谢。

原问题:Setting variable through reflection

阅读 5.9k
1 个回答

JaredPar:
根据你的描述 myVar是一个字段,因此你需要使用GetField 而不是 GetProperty。

Georgi-it:
如果变量是个字段,则应该使用如下技巧:

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

如果是属性:

myObj.GetType().GetProperty("varName", BindingFlags.Instance | BindingFlags.Public).SetValue(myObj, someValue, null);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进