2011-06-30 45 views
13

我需要编写一个程序,该程序从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); 
      } 
     } 
    } 

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

我怎能无视作为“文件”添加的资源,以及只读字符串?

+0

难道不可能在值上使用'as'铸造吗? –

+0

我可以使用“as”而不是“is”,但它不能解决我的问题 – Oleksey

回答

2

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

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

+0

是的,二进制文件不是问题。只有文本文件存在问题。但是当我在Visual Studio 2010中观看资源时,它们按类型排序:“字符串”\“文件”\“图像”\“图标”。他们是怎么做到的? – Oleksey

+0

这些是Visual Studio的资源表示形式。它使用文件和图片以及图标位置将它们作为资源加载到程序集中。之后,您只能使用位图,字符串或字节[]数据组装。 – DiVan

相关问题