我在堆栈溢出时遇到类似于我的问题:Loop through all Resources in ResourceManager - C#。它只解决了我需要做的一部分。当您在特定文化的资源文件中请求条目时,如果没有一个文件存在,它将默认回到中性文化资源文件。asp.net获取.resx的所有资源而不指定文化(ResourceManager.GetResourceSet)
我需要遍历给定资源文件的每个条目,并且GetResourceSet需要一种文化。例如,我有一个中立的资源文件,其中有3个条目,文件特定的资源文件伴随有1个条目的中性文件。
我的中性资源示例文件是MyResource.resx,我的文化特定资源示例文件是MyResource.en-gb.resx。以下代码显示了我目前如何循环访问所有资源条目。
Dim cultInfo as New CultureInfo(culture)
For Each entry As System.Collections.DictionaryEntry In myResourceManager.GetResourceSet(cultInfo, True, True)
Next
中立资源文件条目
- 全名/姓名
- ******中国/电话号码
- 国家/国家
特定文化资源文件条目
- 州/县
当我打电话GetResourceSet的特定文化,我只拿回1项。我希望(并希望)能够重写所有3个条目,并重写一个文化特定条目。以下是我想要返回:
- 全名/姓名
- ******中国/电话号码
- 国家/ 县
反正是有,我可以做到这一点?谢谢。
我明白这个*解决方法*解决了这个问题,但仍然发现(和我发现的一样)这个'GetResourceSet'方法的行为并不能反映[documentation](http://msdn.microsoft.com/zh-cn/)中的内容。 COM/EN-US /库/ system.resources.resourcemanager.getresourceset(v = VS.100)的.aspx)。 – superjos 2013-08-22 17:41:59
好吧,其实我试过了,在我的情况下它并没有解决问题。在遍历resourceSet时,我只获取特定于语言环境的键。该集合根本没有来自回退资源的密钥。 :(我仔细检查了我传递了正确的文化,真实,真实。 – superjos 2013-08-22 18:04:51
最后,我这样管理它:我从'InvariantCulture'创建了一个字典,另一个从'CurrentUICulture'中创建了一个字典,然后我把前者合并后者。 – superjos 2013-08-23 09:25:43