隐式初始化静态类
本文关键字:静态类 初始化 | 更新日期: 2023-09-27 18:14:13
是否可以在应用程序启动时"自动"初始化静态类?我所说的自动是指不需要引用属性。
我希望能够做到这一点的原因是,我想在启动时自动为应用程序主题。
下面是一个简短的片段:
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 );
在应用程序的构造函数(这是WPF项目),它会做的工作,然而,至少从我的角度来看(如果我错了请纠正我),它会更有意义的默认主题应用,而不需要明确地说明它
是否可以在应用程序启动时"自动"初始化静态类?我所说的自动是指不需要引用属性。
保证静态构造函数执行的唯一方法是以某种形式使用该类型。它不需要引用一个属性(它可以构造一个实例,使用一个方法,等等),但你确实需要使用类型。静态构造函数可能永远不会运行。
你当前的选择,或者它的一个变体,似乎是最好的解决方案。您可以将其更改为单个调用,例如:
Settings.InstallDefaultTheme();
如果你愿意,因为Settings
的引用将强制执行静态构造函数