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

Dynamically enumerate fields from List<T>

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

的字段
EnumerateFields(typeof(Student));

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

    }
}

效果很好。

现在我想从 List<> 执行相同的任务。伪代码-

EnumerateFields(List<Student>);

void EnumerateFields(List<T>)
{

}

有什么办法吗?

如果您确定要传入 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));
        }
    }
}