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
之外,还有什么让您觉得您需要做的呢?您是指列表的属性吗?如果是这样的话,你只是打错了。如果不是,请说明您想要什么。您不是在迭代列表中的项目,而是在遍历其属性。