私は次のクラスを持っています:
public class DocketType : Enumeration<DocketType, int, string>
{
public static DocketType ChangeOver = new DocketType(1, "Changeover");
public static DocketType Withdrawal = new DocketType(2, "Withdrawal");
public static DocketType Installation = new DocketType(3, "Installation");
private DocketType(int docketTypeId, string description)
: base(docketTypeId, description)
{
}
}
次の基本クラスを使用します。
public abstract class Enumeration<TEnum, X, Y> : IComparable
where TEnum : Enumeration<TEnum, X, Y>
where X : IComparable
where Y : IComparable
{
protected Enumeration(X value, Y displayName)
{
AddToStaticCache(this);
}
public static TEnum Resolve(X value)
{
return Cache[value] as TEnum;
}
}
私が抱えている問題は、静的クラスが最初に使用されるときに、が作成されていないことです。これは、基本クラスのメソッドを介したChangeover
ものWithdrawal
です。つまり、電話をかけると、空になります。Installation
Resolve
Resolve
Cache
ただし、のようなことを行うとDocketType foo = DocketType.Changeover;
、Application_Start
すべての静的フィールドが作成され、Cache
3つの値すべてが含まれます。
このシナリオが機能するようにこれらの静的フィールドを作成する正しい方法は何ですか?