C# 从列表中动态枚举字段<;T>;

C# 从列表中动态枚举字段<;T>;,c#,system.reflection,C#,System.reflection,我使用以下方法枚举类的字段- EnumerateFields(typeof(Student)); void EnumerateFields(Type type) { PropertyInfo[] props = type.GetProperties(); foreach (PropertyInfo prp in props) { } } 它工作得很好 现在,我想从列表中执行相同的任务。伪码- EnumerateFields(List<Student&g

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

EnumerateFields(typeof(Student));

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

    }
}
它工作得很好

现在,我想从列表中执行相同的任务。伪码-

EnumerateFields(List<Student>);

void EnumerateFields(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
    }
}

我想你想要这样的东西:

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));
        }
    }
}
void枚举字段(列表输入)
{
PropertyInfo[]props=typeof(T).GetProperties();
foreach(输入中的var r)
{    
foreach(道具中prp的属性信息)
{
Console.WriteLine(prp.Name+“=”+prp.GetValue(r));
}
}
}

typeof
操作符中,除了用
List
替换
Student
之外,还有什么让您觉得您需要做的呢?您是指列表的属性吗?如果是这样的话,你只是打错了。如果不是,请说明您想要什么。您不是在迭代列表中的项目,而是在遍历其属性。