C# 将CulterInfo解析到dll一次
我有一个小应用程序,它有一个GUIC# 将CulterInfo解析到dll一次,c#,dll,C#,Dll,我有一个小应用程序,它有一个GUI表单和一个类库。在我的类库中,我有一个名为“设置”的类。设置具有字符串属性“CulterInfo” 这是来自GUI.frm(代码1)的代码 这是来自Base.dll(代码2)的代码 这是“设置”类的代码(代码3) 当我像上面那样做时,我会得到一个错误。原因是因为我使用的Base.Settings.CultureInfo=“en-US”实际上仍然是空的 当我评论Base.Settings.CultureInfo=“en-US”和do私有静态字符串cultureIn
表单
和一个类库
。在我的类库中,我有一个名为“设置”的类。设置具有字符串属性
“CulterInfo”
这是来自GUI.frm
(代码1)的代码
这是来自Base.dll
(代码2)的代码
这是“设置”类的代码(代码3)
当我像上面那样做时,我会得到一个错误。原因是因为我使用的Base.Settings.CultureInfo=“en-US”实际上仍然是空的代码>
当我评论Base.Settings.CultureInfo=“en-US”代码1中的code>和do私有静态字符串cultureInfo=“en-US”代码>在代码3中,它正在工作
所以我的主要问题是,我想为我正在使用的dll
设置一次CultureInfo
,但这并不像我希望的那样工作。是否有更好的方法为dll
设置CultureInfo
一次,比如在应用程序启动时,这样就不必再为它操心了
编辑1:使用配置文件可以解决这个问题,还是有更优雅的解决方案?您的静态CultureInfo cul=新的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);
}
}
是的,那是为了我,tnx。
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) });
}
public class Settings
{
private static string cultureInfo;
public static string CultureInfo { get { return cultureInfo; } set { cultureInfo = value; } }
}
//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());