我有一个包含变量列表的类(缩写为一个" a"此处) - 我试图创建一种基于两个字符串输入填充变量的方法,所以我可以只是使用,例如:
SET_VAL("a", "value_for_a")
我希望MessageBox只显示" value_for_a"
但是我试图使用反射,我确信这是可能的,我知道可以使用字符串从变量中获取值来查找它#&b;这个名字,因为每当我搜索到这一切时,我似乎都得到了,但为什么不进行以下工作呢?当我只想传递两个字符串时,方法SetValue
要求将对象作为参数?
public class reform_subsnote
{
public string a;
public void SET_VAL(string mytype, string myvalue)
{
this.GetType().GetField(mytype).SetValue(myvalue);
MessageBox.Show(a);
}
}
答案 0 :(得分:2)
正如Lasse在评论中提到的SetValue
期望两个参数,第一个是设置值的实例,第二个是新值。所以这应该这样做:
public void SET_VAL(string mytype, string myvalue)
{
this.GetType().GetField(mytype).SetValue(this, myvalue);
MessageBox.Show(a);
}