2011-06-30 10 views
13

私はdllからすべての文字列リソースを読み込んでそれをいくつかのテーブルに挿入するプログラムを書く必要があります。 resourcemanagerからすべての文字列を取得

(ファイルの内容を読み込んで)どのように私は無視することができます

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

"is"の代わりに "as"を使用できますが、私の問題を解決していません – Oleksey

答えて

2

これを行う方法はありません。 例えばReflectorを介してアセンブリのリソースセクションを見てください。テキストファイルはStringとして保存されます。文字列値とテキストファイル値には違いはありません。

ただし、バイナリファイルタイプの場合、バイト[]を値として使用し、文字列ではないため、バイナリファイルは問題にはなりません。

+0

はい、バイナリファイルは問題ありません。テキストファイルのみに問題があります。しかし、私はVisual Studio 2010のリソースを見ているとき、それらはタイプによってソートされます: "文字列" \ "ファイル" \ "イメージ" \ "アイコン"。彼らはどうしているのですか? – Oleksey

+0

これらはVisual Studioのリソース表現です。ファイルや画像、アイコンの場所を使用して、それらをリソースとしてアセンブリにロードします。その後、ビットマップ、文字列、またはバイト[]データを持つアセンブリのみがあります。 – DiVan

関連する問題