Dynamischer Verweis auf Ressourcendateien in C#
-
09-06-2019 - |
Frage
Ich habe eine Anwendung, für die ich die Lokalisierung umsetze.
Ich muss jetzt dynamisch auf einen Namen in der Ressourcendatei verweisen.
Angenommen, ich habe eine Ressourcendatei namens Login.resx und eine Reihe von Zeichenfolgen:foo="hello", bar="cruel" und baz="world"
Normalerweise beziehe ich mich auf Folgendes:String-Ergebnis =Login.foo;und result=="Hallo";
Mein Problem ist, dass ich zur Codezeit nicht weiß, ob ich auf foo, bar oder baz verweisen möchte – ich habe eine Zeichenfolge, die entweder „foo“, „bar“ oder „baz“ enthält.
Ich brauche so etwas wie:
Login["foo"];
Weiß jemand, ob es eine Möglichkeit gibt, dynamisch auf eine Zeichenfolge in einer Ressourcendatei zu verweisen?
Lösung
Sie müssen eine Instanz erstellen ResourceManager
für die Login.resx
:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Login",
System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");
Es kann hilfreich sein, sich den generierten Code in den Code-Behind-Dateien der von der IDE erstellten Ressourcendateien anzusehen.Diese Dateien enthalten grundsätzlich schreibgeschützte Eigenschaften für jede Ressource, die eine Abfrage an einen internen Ressourcenmanager stellt.
Andere Tipps
Wenn Sie Ihre Ressourcendatei wie ich im Ordner App_GlobalResources ablegen, müssen Sie sie verwenden
global :: system.resources.resourceManager temp = new Global :: system.resources.resourceManager ("rootNamePace.login", global :: system.reflection.assembly.load ("app_globalresources");
Es hat eine Weile gedauert, bis ich das herausgefunden habe.Ich hoffe, das hilft jemandem.:) :)