我想了解这样的代码如何检索指定的ThreadUI Culture的资源?
var value = resourceAssembly
.GetType("Namespace.FooBar")
.GetProperty("Hello")
.GetValue(null, null) as string;
如果我的ThreadUI文化是英语,我会得到英语价值。如果是德国人,我会得到德国的价值。 好的。但它是如何在里面工作的?
答案 0 :(得分:4)
如果打开与该类型对应的生成的C#文件,您将看到如下内容:
internal static string Hello {
get {
return ResourceManager.GetString("Hello", resourceCulture);
}
}
除非您具体 resourceCulture
(通过设置Culture
属性),它仍然是null
,因此以上内容将等同于:
return ResourceManager.GetString("Hello", null);
ResourceManager
属性返回System.Resources.ResourceManager
,如果您查看ResourceManager.GetString(string, CultureInfo)
的文档,您会看到:
在桌面应用中,如果 culture 为
null
,则GetString(String, CultureInfo)
方法会使用从CultureInfo.CurrentUICulture
属性获取的当前UI文化。
就是这样 - 只是调用一个默认使用当前UI文化的库方法。