基本上,我想在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();
答案 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);
}