5

"자동"응용 프로그램 시작시 정적 클래스를 초기화 할 수 있습니까? 자동으로 속성을 참조 할 필요없이 의미합니다.암시 적으로 정적 클래스 초기화

내가 이것을 할 수 있기를 원하는 이유는 시작시 자동으로 테마를 테마로하고 싶기 때문입니다. 여기

짧은 조각이다 : 나는 내가 할 수있는 알고

static class Settings{ 
    private static Theme _defaultTheme; 
    public static Theme DefaultTheme{ 
     get{ 
      return _defaultTheme; 
     } 
     private set{ 
      _defaultTheme = value; 
      ThemeManager.SetTheme(value); 
     } 
    } 
    static Settings(){ 
     DefaultTheme = Themes.SomeTheme; 
    } 
} 

(그리고는 순간입니다 방법) (원본 게터/세터로 가서 응용 프로그램의 생성자에서

ThemeManager.SetTheme(Settings.DefaultTheme); 

전화 그것은 WPF 프로젝트입니다.) 적어도 내 관점에서 볼 때 (제 생각에는 틀린 것이 맞습니다.) 기본 테마가 명시 적으로 명시 할 필요없이 적용되는 것이 더 적합 할 것입니다 .

+1

'DefaultTheme' 또한 정적이어야합니다. 그렇지 않으면 컴파일러 오류가 발생합니다. –

+0

@ p.s.wg 예, 미안 해요, 미안 해요. – pikausp

+0

'DefaultTheme' 속성을 재귀 적으로 호출하는 것처럼 보입니다. 속성의 닫는 괄호가 필요합니다. –

답변

5

앱 시작시 정적 클래스를 "자동으로"초기화 할 수 있습니까? 자동으로 속성을 참조 할 필요없이 의미합니다.

정적 생성자가 실행되도록 보장하는 유일한 방법은 형식을 사용하는 것입니다. 속성을 참조 할 필요가 없습니다 (메서드를 사용하여 인스턴스를 생성 할 수 있음). 그러나 형식을 사용해야합니다. 정적 생성자는 결코 달리 실행되지 않을 수 있습니다.

현재 옵션 또는 그 변형이 최상의 솔루션 인 것 같습니다. 원하는 경우

Settings.InstallDefaultTheme(); 

Settings의 참조가 정적 생성자를 강제하기 때문에 실행하려면 다음과 같은 단일 통화를 가진이를 변경할 수 있습니다.

+0

좋아, 그걸로 갈거야, 고마워, 갈대 – pikausp