反映类的列表并遍历属性

时间:2019-09-16 21:31:38

标签: c# list reflection

基本上,我想在List中创建类的反映版本,以便可以迭代列表,然后也可以迭代其属性。

我已经到达可以迭代一个类的单个实例的属性的地方,但是我似乎无法为反射类的List <>找到解决方案。

基本上我想要List[i].property[j] = GetData(c);

下面是我用来获取反射类及其属性列表的代码。

Type reportType = typeof(ReportController);
Type reportListType = typeof(List<ReportController>);

PropertyInfo[] properties = reportListType.GetProperties();

我也尝试了=typeof(List<>);,但是传入了reportType,无论出于何种原因,格式都不会在SO上显示。

以下是我已访问的引用。
C# instantiate generic List from reflected Type
https://docs.microsoft.com/en-us/dotnet/api/system.type.makegenerictype?view=netframework-4.8
Set object property using reflection

感谢所有帮助。

为什么要获得关于stackoverflow的帮助如此痛苦?我的意思是说真的,如果对您来说如此容易,以至于您花了点时间评论,那为什么不阅读一些代码并获得免费答案呢?

编辑: 下面将给我一个类的数组,但是我无法枚举属性,而只是给了我数组类型的属性。


Type reportType = typeof(ReportController).MakeArrayType();

PropertyInfo[] properties = reportType.GetProperties();

1 个答案:

答案 0 :(得分:0)

您已经拥有单个实例所需的代码,因此将其放在单独的方法中:

public void Foo(ReportController input)
{
    Type reportType = typeof(ReportController);
    PropertyInfo[] properties = reportType.GetProperties();
    //Do something with the properties
}

完成后,您只需要遍历列表并调用它即可。

foreach (var item in list)
{
    Foo(item);
}