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をループし、名前空間の最後の部分をマークアップ拡張に与えられた辞書パスと照合してみたいと思います。