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 的东西,而不是一个组装的东西。大多数程序集与默认命名空间具有相同的名称,但并非总是如此。因此,我想遍历程序集中的所有 ResourceManager,并尝试将其名称空间的最后一部分与提供给标记扩展的字典路径相匹配。

4

1 回答 1

0

好的,我发现了如何做到这一点:

var resources = assembly.GetManifestResourceNames();

不过,该操作似乎相当昂贵,下一个挑战:在 ResourceDictionary 中加载 ResourceManager..

于 2010-12-16T09:49:33.743 回答