Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对遵循特定命名约定的类中的属性进行计数_C# - Fatal编程技术网

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"));
}