9

我可以在创建对象之前计算类中的属性数量吗?我可以在构造函数中这样做吗?

class MyClass
{  
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }

    public MyClass()
    {
        int count = //somehow count properties? => 3
    }
}

谢谢

4

5 回答 5

19

是的你可以:

class MyClass
{  
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }

    public MyClass()
    {
        int count = this.GetType().GetProperties().Count();
        // or
        count = typeof(MyClass).GetProperties().Count();
    }
}
于 2012-07-24T14:17:54.240 回答
5

正如 BigYellowCactus 所展示的那样,使用反射是可能的。但是没有必要每次都在构造函数中这样做,因为属性的数量永远不会改变。

我建议在静态构造函数中执行此操作(每种类型仅调用一次):

class MyClass
{  
    public string A{ get; set; }
    public string B{ get; set; }
    public string C{ get; set; }

    private static readonly int _propertyCount;

    static MyClass()
    {
        _propertyCount = typeof(MyClass).GetProperties().Count();
    }
}
于 2012-07-24T14:21:47.993 回答
3
public MyClass()
{
    int count = GetType().GetProperties().Count();
}
于 2012-07-24T14:19:41.487 回答
0

使用它来计算你的类包含的属性的数量

Type type = typeof(YourClassName);
int NumberOfRecords = type.GetProperties().Length;
于 2017-01-30T10:13:34.743 回答
0

通过反射,您可以检查类的属性:

typeof(ClassName).GetProperties().Length;
于 2021-04-25T09:38:15.697 回答