1

Wpf でのローカリゼーションの目的で、アセンブリ内のすべての ResourceManager をループしたいと考えています。

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

既定のアセンブリは、次のように取得できる xaml ファイルが配置されているアセンブリです。

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

相対パスを指定する場合、デフォルト パスを先頭に追加する必要がありますが、これはアセンブリではなく VS の問題です。ほとんどのアセンブリは既定の名前空間と同じ名前ですが、常にそうであるとは限りません。そのため、Assembly 内のすべての ResourceManager をループして、名前空間の最後の部分を、マークアップ拡張機能に指定されたディクショナリ パスと一致させたいと考えています。

4

1 に答える 1

0

さて、私はそれを行う方法を見つけました:

var resources = assembly.GetManifestResourceNames();

操作は非常にコストがかかるようですが、次の課題: ResourceManager を ResourceDictionary にロードします。

于 2010-12-16T09:49:33.743 に答える