c#基于字符串设置变量值

时间:2018-05-04 07:41:53

标签: c#

我有一个包含变量列表的类(缩写为一个" 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);
       }
   }

1 个答案:

答案 0 :(得分:2)

正如Lasse在评论中提到的SetValue期望两个参数,第一个是设置值的实例,第二个是新值。所以这应该这样做:

public void SET_VAL(string mytype, string myvalue)
{
    this.GetType().GetField(mytype).SetValue(this, myvalue);
    MessageBox.Show(a);
}