遍历ResourceManager中的所有资源 - C#

18

如何循环遍历资源管理器中的所有资源?

例如: foreach (string resource in ResourceManager) //对资源进行操作。

谢谢。

2个回答

30

使用ResourceManager.GetResourceSet()获取特定文化的所有资源列表。返回的ResourceSet实现了IEnumerable接口(可以使用foreach循环)。


回答Nico的问题:您可以将IEnumerable强制转换为通用的IEnumerable<object>,并使用C# 3.5中的新扩展方法Enumerable.Count<T>()来计算其元素的数量:

using System.Linq;

...

var resourceSet = resourceManager.GetResourceSet(..);
var count = resSet.Cast<object>().Count();

我该如何获取它的计数? - bevacqua
@Nico:IEnumerable不实现Count属性,但您可以迭代条目并对其进行计数。或者,您可以将RessourceSet强制转换为IEnumerable<object>并使用C# 3.5中的新Count()扩展方法:http://msdn.microsoft.com/en-us/library/system.linq.enumerable.count.aspx - VVS
有没有一种方法可以循环遍历所有可用的文化?我正在尝试编写一个 T4 模板,从 resx 文件生成本地化的 JSON 文件。 - Santhos

1

我想知道为什么你想要循环遍历所有资源。

无论如何,ResourceManager需要被实例化,给它一个Type或者基本名称来查找资源。然后,你将能够检索到一个ResourceSet,但是需要给定一个CultureInfo,因此如果你想要获取给定`ResourceManager`的所有资源,你需要指定相应的CultureInfo


我们有一个用途,允许客户管理员在数据库中覆盖语言文字,因此我们需要一个页面来显示他们可以覆盖的所有资源。 - user1878526

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接