Pergunta

For localization purposes in Wpf I would like to loop through all ResourceManagers in an assembly.

The reason I want to do this is that I have a translate xaml markup extension. This markup extension needs to instantiate a ResourceManager using a fully qualified namespace and an assembly name.

The default assembly is the assembly in which the xaml file is located in which can be retrieved as follows:

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

When given a relative path the default path needs to be prepended, but this is a VS thing not an assembly thing. Most assemblies have the same name as the default namespace, but this is not always the case. Therefor I would like to loop through all ResourceManagers in an Assembly and try to match the last part of their namespace with the dictionary path given to the markup extension.

Foi útil?

Solução

Okay I found out how to do it:

var resources = assembly.GetManifestResourceNames();

The operation seems quite costly though, next challenge: loading a ResourceManager in a ResourceDictionary..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top