2010-12-16 8 views
1

Wpfでのローカライズのために、アセンブリ内のすべてのResourceManagerをループしたいと思います。アセンブリ内のすべてのResourceManagerを取得します。

私がこれをやりたい理由は、xamlのマークアップ拡張を翻訳しているからです。このマークアップ拡張は、完全修飾名前空間とアセンブリ名を使用してResourceManagerをインスタンス化する必要があります。

デフォルトのアセンブリは、以下のように取得することができるXAMLファイルが配置されているアセンブリである:

var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider; 
var root = rootObjectProvider.RootObject; 
var assembly = ass = Assembly.GetAssembly(root.GetType()); 

相対パスが与えられた場合、デフォルトのパスを付加する必要があるが、これはVSであります組立物ではないもの。ほとんどのアセンブリは既定の名前空間と同じ名前ですが、これは必ずしも当てはまりません。そのため、アセンブリ内のすべてのResourceManagersをループし、名前空間の最後の部分をマークアップ拡張に与えられた辞書パスと照合してみたいと思います。

答えて

0

わかりました、私はそれを行う方法を見つけた:

var resources = assembly.GetManifestResourceNames(); 

操作が次の課題は、しかし、非常に高価なようだ:

...のResourceDictionaryでのResourceManagerを読み込みます
関連する問題