C# 对遵循特定命名约定的类中的属性进行计数
在项目中,有一个类具有多个相似的属性名称。感兴趣的属性以C# 对遵循特定命名约定的类中的属性进行计数,c#,C#,在项目中,有一个类具有多个相似的属性名称。感兴趣的属性以ReportData开头。有没有办法修改GetReportDataFieldCount方法,使其自动统计类中以ReportData开头的属性数 public class ReportRowDataContract { public ReportDataDataContract ReportData1 { get; set; } public ReportDataDataContract ReportData2 { g
ReportData
开头。有没有办法修改GetReportDataFieldCount
方法,使其自动统计类中以ReportData
开头的属性数
public class ReportRowDataContract
{
public ReportDataDataContract ReportData1 { get; set; }
public ReportDataDataContract ReportData2 { get; set; }
public ReportDataDataContract ReportData3 { get; set; }
public ReportDataDataContract ReportData4 { get; set; }
public ReportDataDataContract ReportData5 { get; set; }
public ReportDataDataContract ReportData6 { get; set; }
// an indexed property - for accessing report data fields by index
public ReportDataDataContract this[int i]
{
get
{
return new ReportDataDataContract[]
{
ReportData1,
ReportData2,
ReportData3,
ReportData4,
ReportData5,
ReportData6
}[i];
}
}
public int GetReportDataFieldCount()
{
return 6;
}
}
请注意,我无法更改此类的结构(即按顺序编号的ReportData属性)。您可以使用反射。具体地说,要获得一个数组,而从中得到的只是linq的:
int GetReportDataPropertiesCount()
{
return typeof(ReportRowDataContract)
.GetProperties()
.Count(p => p.Name.StartsWith("ReportData"));
}