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

App のコンストラクターで (これは WPF プロジェクトです)、それは仕事をしますが、少なくとも私の観点からは (間違っている場合は修正してください)、デフォルトのテーマを適用せずに適用する方が理にかなっています明示的に述べる必要があります。

4

1 に答える 1

5

アプリの起動時に「自動的に」静的クラスを初期化することは可能ですか? 自動的とは、プロパティを参照する必要がないことを意味します。

静的コンストラクターが実行されることを保証する唯一の方法は、何らかの形式で型を使用することです。プロパティを参照する必要は必ずしもありません (インスタンスの構築、メソッドの使用など) が、型を使用する必要があります。それ以外の場合、静的コンストラクターが実行されない可能性があります。

現在のオプション、またはそのバリエーションが最適なソリューションのようです。これを、次のような単一の呼び出しに変更できます。

Settings.InstallDefaultTheme();

の参照はSettings静的コンストラクターの実行を強制するため、必要に応じて。

于 2014-07-21T18:44:37.713 に答える