У меня есть следующий класс:
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
имеет все три значения.
Как правильно создать эти статические поля, чтобы этот сценарий работал?