Ich habe viele Fragen und Antworten zum Zuordnen von Strings zu Enums und umgekehrt gesehen, aber wie kann ich eine Reihe lokalisierter Strings zu Enums zuordnen?Wie kann ich Zeichenfolgen für C# enum-Werte internationalisieren?
Sollte ich nur eine extension method like this erstellen, die die richtige Zeichenfolge aus einer Ressource-Datei zurückgibt? Gibt es eine Möglichkeit, Attribute (wie "Beschreibung") zu lokalisieren, die in solutions like this verwendet werden?
Welche ist die bevorzugte Lösung - Erweiterung Methode oder Attribute. Es scheint mir, dass dies nicht der beabsichtigte Zweck von Attributen ist. In der Tat, jetzt, wo ich darüber nachdenke, wenn ich eine Erweiterungsmethode verwende, scheint ein Attribut etwas zu sein, das ich verwenden würde, um einen Schlüssel in einer Ressourcendatei für die lokalisierte Zeichenfolge anzugeben, die ich anstelle des Aufzählungswerts verwenden möchte.
EDIT - Beispiel:
die folgenden Aufzählungstyp,
public enum TransactionTypes {
Cheque = 1,
BankTransfer = 2,
CreditCard = 3
}
ich einen Weg möchte jede Art an einen lokalisierten String abzubilden. Ich begann mit einer Erweiterungsmethode für die Enumeration, die eine switch-Anweisung und stark typisierte Verweise auf die Ressourcendatei verwendet.
Eine Erweiterungsmethode für jedes Enum scheint jedoch keine gute Lösung zu sein. Ich habe begonnen, this zu folgen, um ein benutzerdefiniertes Attribut für jeden aufgelisteten Wert zu erstellen. Das Attribut hat einen Basisnamen und einen Schlüssel für die Ressourcendatei, die lokalisierte Zeichenfolgen enthält. In der obigen Aufzählung, zum Beispiel habe ich dies:
...
[EnumResourceAttribute("FinancialTransaction", "Cheque")]
Cheque = 1,
...
Wo „FinanacialTransaction“ ist die resx Datei und „Check“ ist die String-Taste. Ich versuche, eine Hilfsmethode zu erstellen, zu der ich einen beliebigen Wert aus einer Aufzählung übergeben und die lokalisierte Zeichenfolgendarstellung dieses Werts zurückgeben könnte, vorausgesetzt, das benutzerdefinierte Attribut wurde angegeben. Ich kann einfach nicht herausfinden, wie man dynamisch auf eine Ressourcendatei und einen darin enthaltenen Schlüssel zugreift.
+1 Ich war 1 min zu spät :) –
ich mehr klar gewesen sein sollte - ich würde nichts anderes verwenden als Ressourcendateien (wir verwenden sie bereits für alles andere, was i18n benötigt). Ich suche nach Lösungen zum Zuordnen der Ressourcenstrings zu der Enumeration. – Matt
@Duke: Okay, es ist nicht ganz klar, was du willst - ich habe meine Antwort mit einer sehr einfachen Erweiterungsmethode aktualisiert, aber ich vermute, dass du nach etwas mehr als dem ... –