动态枚举List <t>中的字段

时间:2016-03-19 12:54:38

标签: c# system.reflection

我正在使用以下方法枚举我的类的字段 -

EnumerateFields(typeof(Student));

void EnumerateFields(Type type)
{
    PropertyInfo[] props = type.GetProperties();
    foreach (PropertyInfo prp in props)
    {

    }
}

效果很好。

现在我想从List&lt;&gt;中执行相同的任务。伪代码 -

EnumerateFields(List<Student>);

void EnumerateFields(List<T>)
{

}

有什么办法吗?

2 个答案:

答案 0 :(得分:2)

我认为你想要这样的东西:

void EnumerateFields<T>(List<T> input)
{
    PropertyInfo[] props = typeof(T).GetProperties();
    foreach (var r in input)
    {    
        foreach (PropertyInfo prp in props)
        {
            Console.WriteLine(prp.Name + " = " + prp.GetValue(r));
        }
    }
}

答案 1 :(得分:0)

如果您确定,您已经通过了List<T>,则仍然可以获得T的属性:

private void EnumerateFields(Type type)
{
    Type subType = type.GetGenericArguments()[0];

    PropertyInfo[] props = subType.GetProperties();
    foreach (PropertyInfo prp in props)
    {
        // your logic here
    }
}