【发布时间】:2011-03-27 20:02:39
【问题描述】:
我有以下课程:
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 方法创建的。 IE。如果我打电话给Resolve,那么Cache 将是空的。
但是,如果我在Application_Start 中执行DocketType foo = DocketType.Changeover; 之类的操作,则会创建所有静态字段,然后Cache 具有所有三个值。
创建这些静态字段的正确方法是什么?
【问题讨论】:
标签: c# c#-4.0 static-methods static-classes