.net 检索程序集中的所有ResourceManager

.net 检索程序集中的所有ResourceManager,.net,xaml,localization,assemblies,resourcemanager,.net,Xaml,Localization,Assemblies,Resourcemanager,为了在Wpf中实现本地化,我想在程序集中遍历所有ResourceManager 我想这样做的原因是我有一个translate xaml标记扩展。此标记扩展需要使用完全限定的命名空间和程序集名称实例化ResourceManager 默认程序集是xaml文件所在的程序集,可以按如下方式检索该程序集: var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvid

为了在Wpf中实现本地化,我想在程序集中遍历所有ResourceManager

我想这样做的原因是我有一个translate xaml标记扩展。此标记扩展需要使用完全限定的命名空间和程序集名称实例化ResourceManager

默认程序集是xaml文件所在的程序集,可以按如下方式检索该程序集:

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

当给定一个相对路径时,需要在默认路径前面加上前缀,但这是一个VS对象,而不是一个程序集对象。大多数程序集与默认命名空间具有相同的名称,但情况并非总是如此。因此,我想循环一个程序集中的所有ResourceManager,并尝试将其命名空间的最后一部分与给定给标记扩展的字典路径相匹配。

好的,我找到了方法:

var resources = assembly.GetManifestResourceNames();
不过,该操作的成本似乎相当高,下一个挑战是:在ResourceDictionary中加载ResourceManager