사용자 친화적 인 식별자와 임의의 관련 값을 사용하여 열거 형을 만들 수있는 사용자 정의 열거 형 클래스를 가져 오려고합니다. 지금까지 너무 좋은 :정적 필드의 이상한 동작
public class EnumBase<T, E>
where E : class
{
private static readonly List<E> list = new List<E>();
private string text;
private T value;
public string Text { get { return text; } }
public T Value { get { return value; } }
public EnumBase(string text, T value)
{
this.text = text;
this.value = value;
list.Add(this as E);
}
protected static IEnumerable<E> ItemList
{
get { return list; }
}
}
public class Zahlungsart : EnumBase<int, Zahlungsart>
{
public static readonly Zahlungsart Erlagsschein = new Zahlungsart("Erlagsschein", 0);
public static readonly Zahlungsart Lastschrift = new Zahlungsart("Lastschrift", 1);
private Zahlungsart(string text, int value) : base(text, value) { }
public static new IEnumerable<Zahlungsart> ItemList { get { return EnumBase<int, Zahlungsart>.ItemList; } }
}
그리고 지금 내 문제 :
Console.WriteLine(Zahlungsart.ItemList.Count());
다음 명령문은 나에게 공을 제공, 문제는 beforefieldinit 예정이다 대신 2, 나는 생각한다. 이 문제를 해결하려면 특정 열거 형의 일부 메서드를 직접 호출하여 정적 필드를로드해야하지만이 방법은 최상의 솔루션이 아닙니다.
힌트 : 여기에 enum에 대한 [UserfriendlyName()] 속성을 제안하지 마십시오. 이미 알고 있습니다.
수정 감사합니다. 나는 틀린 일반적인 전문화를 부르는 나의 자신의 부호에있는 참으로 오타가, 있었다.
이제 내 질문에, 각 하위 클래스에서 ItemList 재정의 제거 할 수 있지만 정적 필드를 초기화하는 데 필요한 것으로 보인다.
정확히 동일한 코드를 실행하면 "2"가 출력됩니다. – cdhowie