簡體   English   中英

隱式初始化靜態類

[英]Initialize static class implicitly

是否有可能在應用程序啟動時“自動”初始化靜態類? 我的意思是不需要引用屬性。

我之所以能夠做到這一點,是因為我想在啟動時自動為應用設置主題。

這是一個簡短的片段:

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;
    }
}

我知道我可以(並且現在就是這樣)去使用原始的getter / setter並致電

ThemeManager.SetTheme( Settings.DefaultTheme );

在App的構造函數(它是WPF項目)中,它會完成工作,但是,至少從我的角度來看(如果我輸入錯了,請糾正我),如果沒有需要明確說明。

是否有可能在應用程序啟動時“自動”初始化靜態類? 我的意思是不需要引用屬性。

確保靜態構造函數執行的唯一方法是使用某種形式的類型。 不一定需要引用屬性(它可以是構造實例,使用方法等),但是您確實需要使用類型。 靜態構造函數可能永遠不會運行。

您當前的選擇或它的變體,似乎是最好的解決方案。 您可以將其更改為只打一個電話,例如:

Settings.InstallDefaultTheme();

如果願意,因為對Settings的引用將強制靜態構造函數執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM