2011-10-12 6 views
2

나는 추상 클래스가 있고 오류 코드에 대한 정적 사전을 추가하려고합니다. 나는 다음을 시도했다.정적 클래스 .NET 2.0 선언 및 초기화

public abstract class Base 
{ 
    ... 
    protected static readonly Dictionary<int, string> errorDescriptions = new Dictionary<int, string>() 
    { 
     { 1, "Description1"}, 
     { 2, "Description2"}, 
     ... 
    }; 
    ... 
} 

그러나 이것은 .NET 3.0에서 구현되었다는 것을 발견했다. 나는 2.0을 사용하고있다. 주변을 둘러 보았고 다른 몇몇 사람들은 생성자에 쌍을 추가 할 것을 제안했지만이 클래스는 추상 클래스입니다.

사전을 채우려면 어떻게해야합니까?

감사합니다.

+0

ctor은 어떻습니까? – asawyer

답변

7
public abstract class Base 
{ 
    ... 
    protected static readonly Dictionary<int, string> errorDescriptions; 
    // Type constructor called when Type is first accessed. 
    // This is called before any Static members are called or instances are constructed. 
    static Base() 
    { 
     errorDescriptions = new Dictionary<int, string>(); 
     errorDescriptions[1] = "Description1"; 
     errorDescriptions[2] = "Description2"; 
    } 
} 
+0

감사합니다. 몇 가지 후속 질문이 있습니다. 따라서 파생 클래스'DerivedClass'가'DerivedClass.errorSescriptions' 사전을 사용하면 프로그램은 먼저'Base()'를 호출합니까? 또는 파생 클래스가 생성되었을 때만 사용됩니다. public DerivedClass (,,) : base() {...}'? 생성자가 정적 인 이유가 있습니까? – john

+0

하나의 사전이 만들어지고 모든 하위 클래스에서 사용할 수 있습니다. 예, 서브 클래스가 사용되기 전에 인스턴스화됩니다. –

+0

'Base'에 다른 비 정적 필드가있는 경우 생성자가 정적 일 필요는 없습니까? – john

관련 문제