2010-12-16 8 views
1

Für Lokalisierungszwecke in Wpf möchte ich alle ResourceManager in einer Assembly durchlaufen.Abrufen aller ResourceManager in einer Assembly

Der Grund, warum ich dies tun möchte, ist, dass ich eine Übersetzung XAML Markup-Erweiterung habe. Diese Markup-Erweiterung muss einen ResourceManager unter Verwendung eines vollständig qualifizierten Namespaces und eines Assemblynamens instanziieren.

Die Standardanordnung ist die Anordnung, in der die XAML-Datei, in der Lage ist, kann wie folgt ermittelt werden:

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

Wenn ein relativen Pfad gegebenen der Standardpfad vorangestellt werden muss, aber das ist ein VS Ding nicht eine Versammlung Sache. Die meisten Assemblys haben denselben Namen wie der Standardnamespace, dies ist jedoch nicht immer der Fall. Daher möchte ich alle ResourceManager in einer Assembly durchlaufen und versuchen, den letzten Teil ihres Namespace mit dem Wörterbuchpfad der Markup-Erweiterung übereinzustimmen.

Antwort

0

Okay, habe ich herausgefunden, wie es geht:

var resources = assembly.GetManifestResourceNames(); 

Der Betrieb sehr kostspielig scheint nächste Herausforderung aber: ein Resourcemanager in einem Resource Laden ..