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が示しているように、これはリフレクションを使用して可能です。ただし、プロパティの数は変更されないため、コンストラクターで毎回これを行う必要はありません。

静的コンストラクター(タイプごとに1回だけ呼び出される)で実行することをお勧めします。

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 に答える