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?

War es hilfreich?

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.:) :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top