是否可以在应用启动时自动初始化静态类"自动"? 我自动意思是不需要引用属性。
我希望能够做到这一点的原因是我想在启动时自动设置应用主题。
这是一个简短的片段:
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项目)的构造函数中,它会完成这项工作,但是,至少从我的观点来看(如果我误以为请纠正我)它&#39 ; d更有意义地应用默认主题而无需明确说明它。
答案 0 :(得分:5)
是否可以在应用启动时自动初始化静态类"自动"?我自动意思是不需要引用属性。
保证静态构造函数将执行的唯一方法是以某种形式使用该类型。它不需要引用属性(它可能是构造实例,使用方法等),但您确实需要使用该类型。静态构造函数可能永远不会以其他方式运行。
您当前的选项或其中的变体似乎是最佳解决方案。您可以将其更改为单个调用,例如:
Settings.InstallDefaultTheme();
如果您愿意,因为Settings
的引用会强制执行静态构造函数。