解析CulterInfo到dll一次
本文关键字:一次 dll CulterInfo 解析 | 更新日期: 2023-09-27 18:05:19
我有一个小应用程序,其中有1个GUI Form
和1个Class Library
。在我的类库中,我有一个名为"设置"的Class
。设置有String Property
"CulterInfo"
来自GUI.frm
(代码1)
Base.Settings.CultureInfo = "en-US";
ExceptionHandler.test(new EventArgs());
来自Base.dll
(代码2)
static ResourceManager rm = new ResourceManager("Languages.Language", System.Reflection.Assembly.LoadFrom("Languages.dll"));
static CultureInfo cul = new CultureInfo(Settings.CultureInfo);
public static void test(EventArgs e)
{
ParseException(null, new ExceptionHandlerEventArgs() { ExceptionMessage = rm.GetString("exDefault", cul) });
}
这是Settings的代码Class
(代码3)
public class Settings
{
private static string cultureInfo;
public static string CultureInfo { get { return cultureInfo; } set { cultureInfo = value; } }
}
当我像上面那样做时,我得到一个错误。原因是CulterInfo
实际上仍然是什么我使用Base.Settings.CultureInfo = "en-US";
。
当我在代码1中注释Base.Settings.CultureInfo = "en-US";
并在代码3中执行private static string cultureInfo = "en-US";
时,它正在工作。
所以我的主要问题是,我想为我使用的dll
设置CultureInfo
一次,但这并不像我希望的那样工作。是否有更好的方法将CultureInfo
设置为dll
一次,就像在应用程序启动时一样,并且再也不必为它烦恼了?
编辑1:是否使用配置文件解决这个问题,或者有更优雅的解决方案?
您的static CultureInfo cul = new CultureInfo(Settings.CultureInfo);
可能在您更新Base.Settings.CultureInfo
之前被初始化。
您可以使用InvariantCulture
初始化静态CultureInfo
,并在使用dll
之前更新它
//Code 3
public class Settings
{
private static CultureInfo culture = CultureInfo.InvariantCulture;
public static CultureInfo Culture
{
get { return culture; }
set { culture = value; }
}
public static void SetCulture(string name)
{
culture = new CultureInfo(name);
}
}
//code 2
public class ExceptionHandler
{
static ResourceManager rm = new ResourceManager("Languages.Language", System.Reflection.Assembly.LoadFrom("Languages.dll"));
public static void test(EventArgs e)
{
ParseException(null, new ExceptionHandlerEventArgs() { ExceptionMessage = rm.GetString("exDefault", Settings.Culture) });
}
}
//code 1
/*Base.Settings.Culture = new CultureInfo("en-US");*/ //or...
Base.Settings.SetCulture("en-US");
ExceptionHandler.test(new EventArgs());