获取类对象变量的属性c#

时间:2015-03-04 10:17:50

标签: c#

我需要将一个值分配给一个类的变量,其名称为字符串。

我有一个班级,

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的值。我该如何实现它。 谢谢你的时间。

2 个答案:

答案 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);