我有一个类来处理我的应用程序的本地化。我的目标是这个类在整个应用程序中都是可用的,所以我使它成为静态的。这使我可以在我的应用程序的任何地方调用下面的代码。具有初始化方法的类或静态类的全局实例
Localizer.GetString(/* Key to localize */)
该方法使用Localizer类中的几个字段。为确保设置了这些字段,我们添加了一个Init
方法来初始化Localizer。如果我的班级的用户忘记在例如应用程序启动时调用Init
,则会发生异常,因为这些字段未设置。
一个解决方案,我想的是使定位器类不是静态的,添加一个构造函数,设置字段和我的应用程序初始化的全局static class
类,像这样:
public static class Globals
{
public static Localizer Localize = new Localizer(/* Field arguments here */);
}
现在我不确定最好的方法是什么。
- 静态定位器,但用户必须确保
Init
在使用该类之前被调用。 - 在应用程序中的全局静态类中实例化Localizer。
还有一点需要注意:用户无法访问该类的源代码。
也许使用注册表模式? – progsource
您可以使用Localizer类的静态构造函数来初始化字段,而不是init方法。 –