首页 文章

计算遵循特定命名约定的类中的属性

提问于
浏览
1

在一个项目中,有一个类有几个相似的属性名称 . 感兴趣的属性以 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属性) .

1 回答

  • 3

    你可以使用反射 . 具体来说,GetProperties()得到PropertyInfo的数组 - 并从中's just linq' s Count

    int GetReportDataPropertiesCount()
    {
        return typeof(ReportRowDataContract)
            .GetProperties()
            .Count(p => p.Name.StartsWith("ReportData"));
    }
    

相关问题