【问题标题】:Get all strings from resourcemanager从资源管理器获取所有字符串
【发布时间】:2011-09-25 18:39:21
【问题描述】:

我需要编写一个程序,从 dll 中读取所有字符串资源并将它们插入到某个表中。我有读取资源的方法:

    private static IEnumerable<KeyValuePair<string,string>> getAllResources(ResourceManager resourceManager, 
        Language language)
    {

        ResourceSet resourceSet = resourceManager.GetResourceSet(getCulture(language), true, true);

        IDictionaryEnumerator dictNumerator = resourceSet.GetEnumerator();

        // Get all string resources
        while (dictNumerator.MoveNext())
        {
            // Only string resources
            if (dictNumerator.Value is string)
            {
                var key = (string)dictNumerator.Key;
                var value = (string)dictNumerator.Value;
                yield return new KeyValuePair<string, string>(key, value);
            }
        }
    }

但是当我开始使用它时,我注意到它还读取资源,像文件一样添加(读取文件内容)

如何忽略作为“文件”添加的资源,并且只读取字符串?

【问题讨论】:

  • 不能对值使用as 强制转换吗?
  • 我可以用“as”代替“is”,但这并不能解决我的问题

标签: c# resources resourcemanager


【解决方案1】:

没有办法做到这一点。 例如,通过 Reflector 查看您程序集的资源部分。您的文本文件保存为字符串。字符串值和文本文件值没有区别。

但是,二进制文件不会成为问题,因为对于二进制文件类型,您将 byte[] 作为值而不是字符串。

【讨论】:

  • 是的,二进制文件不是问题。只有文本文件有问题。但是当我在 Visual Studio 2010 中查看资源时,它们按类型排序:“字符串”\“文件”\“图像”\“图标”。他们是怎么做到的?
  • 这些是 Visual Studio 的资源表示。它使用文件、图片和图标位置将它们作为资源加载到程序集中。之后,您只有位图、字符串或字节[] 数据的程序集。
猜你喜欢
  • 1970-01-01
  • 2022-11-22
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2011-05-24
  • 2014-05-11
  • 1970-01-01
相关资源
最近更新 更多