static プロパティを初期化したい
抽象クラス Super
を継承した Sub
クラスがあります。
Sub.All
プロパティで Sub.One
と Sub.Two
のインスタンスを取得したいです。
abstract class Super<T> where T : Super<T>
{
private readonly int value;
private static List<T> list = new List<T>();
public static List<T> All { get { return list; } }
protected Super(int value)
{
this.value = value;
list.Add((T)this);
}
}
class Sub : Super<Sub>
{
public static Sub One = new Sub(1);
public static Sub Two = new Sub(2);
private Sub(int value)
: base(value)
{
}
}
次のようにすれば Sub
の静的コンストラクタが実行されるので、実現できることは理解しています。1 行目がない場合でも実現できる方法が知りたいです。
var instance = Sub.One; // これがなくても実現してほしい
var all = Sub.All; // Sub.One と Sub.Two のインスタンスが格納されていてほしい