我有以下课程:
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
and Installation
当第一次使用静态类是通过Resolve
基类中的方法。 IE。如果我打电话Resolve
, then Cache
将是空的。
但是,如果我做类似的事情DocketType foo = DocketType.Changeover;
in Application_Start
,然后创建所有静态字段,然后Cache
具有所有三个值。
创建这些静态字段以便此场景有效的正确方法是什么?