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

我知道我可以(目前就是这样)使用原始的 getter/setter 并调用

ThemeManager.SetTheme( Settings.DefaultTheme );

在 App 的构造函数中(它是 WPF 项目),它会完成这项工作,但是,至少从我的角度来看(如果我弄错了,请纠正我)如果没有应用默认主题会更有意义需要明确说明。

4

1 回答 1

5

是否可以在应用程序“自动”启动时初始化静态类?自动我的意思是不需要引用属性。

保证静态构造函数将执行的唯一方法是以某种形式使用该类型。它不需要引用一个属性(它可以构造一个实例,使用一个方法等),但你确实需要使用类型。静态构造函数可能永远不会运行。

您当前的选项或它的变体似乎是最好的解决方案。您可以将其更改为进行一次调用,例如:

Settings.InstallDefaultTheme();

如果您愿意,因为 的引用Settings会强制执行静态构造函数。

于 2014-07-21T18:44:37.713 回答