我需要将一个值分配给一个类的变量,其名称为字符串。
即
我有一个班级,
public class Test
{
public int a = 0; //{ get; set; }
public int b { get; set; }
public int c { get; set; }
}
在这里,我可以将值设置为测试变量,如
Test test = new Test();
string var1= "b";
// By Using Reflection
PropertyInfo pi= test.GetType().GetProperty(var1);
pi.SetValue(test, Convert.ChangeType(1,pi.PropertyType), null);
所以我可以将test.b改为1。 同样我需要设置a的值。我该如何实现它。 谢谢你的时间。
答案 0 :(得分:2)
您的int a
不属于某个属性,而是一个字段。因此,您必须使用FieldInfo
代替GetField
来获取GetProperty
:
FieldInfo fi= test.GetType().GetField(var1);
fi.SetValue(test, Convert.ChangeType(1,fi.FieldType));
答案 1 :(得分:0)
a
不是属性,而是字段。你可以用几乎相同的方式获得它,但使用其他反射设施。
FieldInfo a = test.GetType().GetField("a");
int result = (int)a.GetValue(test);