Ho visto molte domande e risposte sul mapping delle stringhe su enumerati e viceversa, ma come posso mappare una serie di stringhe localizzate alle enumerazioni?Come posso internazionalizzare le stringhe che rappresentano i valori enum di C#?
Devo solo creare un extension method like this che restituisca la stringa corretta da un file di risorse? C'è un modo per localizzare attributi (come "Descrizione") che vengono utilizzati in solutions like this?
Qual è la soluzione preferita: metodo di estensione o attributi. Mi sembra che questo non sia lo scopo previsto degli attributi. In effetti, ora che ci penso, se dovessi usare un metodo di estensione, un attributo mi sembrerebbe qualcosa che userei per specificare una chiave in un file di risorse per la stringa localizzata che voglio usare al posto del valore enum.
EDIT - ad esempio:
Dato il seguente enum,
public enum TransactionTypes {
Cheque = 1,
BankTransfer = 2,
CreditCard = 3
}
Vorrei un modo per mappare ogni tipo da una stringa localizzata. Ho iniziato con un metodo di estensione per l'enum che utilizza un'istruzione switch e riferimenti fortemente tipizzati al file di risorse.
Tuttavia, un metodo di estensione per ogni enumerazione non sembra una grande soluzione. Ho iniziato a seguire this per creare un attributo personalizzato per ogni valore enumerato. L'attributo ha un nome e una chiave di base per il file di risorse contenente stringhe localizzate. Nel enum sopra, per esempio, ho questo:
...
[EnumResourceAttribute("FinancialTransaction", "Cheque")]
Cheque = 1,
...
Dove "FinanacialTransaction" è il file RESX e "Check" è la chiave di stringa. Sto provando a creare un metodo di utilità a cui potrei passare qualsiasi valore da qualsiasi enumerazione e restituire la rappresentazione stringa localizzata di quel valore, assumendo che l'attributo personalizzato sia specificato. Non riesco proprio a capire come accedere dinamicamente a un file di risorse ea una chiave al suo interno.
+1 ero 1 min troppo tardi :) –
avrei dovuto essere più chiaro - non avevo intenzione di usare qualcosa di diverso file di risorse (li stiamo già utilizzando per tutto il resto che richiede i18n). Sto cercando soluzioni per mappare le stringhe di risorse per l'enumerazione. – Matt
@Duke: Ok, non è molto chiaro cosa vuoi allora - Ho aggiornato la mia risposta con un metodo di estensione molto semplice, ma sospetto che tu stia cercando qualcosa di più ... –