将值设置为c#中类对象变量的List属性

时间:2015-03-04 12:10:29

标签: c# reflection

我有一个班级,

public class Test
{
    public int b { get; set; }
    public int c { get; set; }
    public List<Doc> doc=new List<Doc>();
}

Public Class Doc
{
    public int a { get; set; }
    public int b { get; set; }
} 

在这里,我可以将值设置为测试变量,如

Test test = new Test();
string var1= "b";
PropertyInfo pi= test.GetType().GetProperty(var1);
pi.SetValue(test, Convert.ChangeType(1,pi.PropertyType), null);

所以我可以将test.b改为1.同样我需要设置doc的值。 我如何实现这一目标。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

doc不是财产;这是一个领域。

        var test = new Test();

        var field = test.GetType().GetField("doc");

        field.SetValue(test, new List<Doc>() { new Doc() });

        Console.WriteLine(test.doc.Count); // 1