He visto muchas preguntas y respuestas sobre la asignación de cadenas a las enumeraciones y viceversa, pero ¿cómo puedo asignar una serie de cadenas localizadas a las enumeraciones?¿Cómo puedo internacionalizar las cadenas que representan los valores enum de C#?
¿Debo simplemente crear un extension method like this que devuelva la cadena correcta de un archivo de recursos? ¿Hay alguna forma de localizar atributos (como "Descripción") que se usan en solutions like this?
Cuál es la solución preferida - método de extensión o atributos. Me parece que este no es el propósito de los atributos. De hecho, ahora que lo pienso, si tuviera que usar un método de extensión, un atributo parece algo que usaría para especificar una clave en un archivo de recursos para la cadena localizada que quiero usar en lugar del valor enum.
EDITAR - ejemplo:
Dada la siguiente enumeración,
public enum TransactionTypes {
Cheque = 1,
BankTransfer = 2,
CreditCard = 3
}
Me gustaría una manera de asignar cada tipo a una cadena localizada. Comencé con un método de extensión para la enumeración que usa una declaración de cambio y referencias fuertemente tipadas al archivo de recursos.
Sin embargo, un método de extensión para cada enumeración no parece una gran solución. Empecé a seguir this para crear un atributo personalizado para cada valor enumerado. El atributo tiene un nombre base y una clave para el archivo de recursos que contiene cadenas localizadas. En la enumeración anterior, por ejemplo, tengo esto:
...
[EnumResourceAttribute("FinancialTransaction", "Cheque")]
Cheque = 1,
...
Donde "FinanacialTransaction" es la resx y "Check" es la clave de cadena. Intento crear un método de utilidad al cual pueda pasar cualquier valor de cualquier enumeración y hacer que devuelva la representación de cadena localizada de ese valor, suponiendo que se especifique el atributo personalizado. Simplemente no puedo entender cómo acceder dinámicamente a un archivo de recursos y una clave dentro de él.
+1 yo era 1 min demasiado tarde :) –
que debería haber sido más claro - que no iba a usar otra cosa que archivos de recursos (ya los estamos usando para todo lo demás que necesita i18n). Estoy buscando soluciones para mapear las cadenas de recursos para la enumeración. – Matt
@Duke: Está bien, no está muy claro lo que quieres entonces - He actualizado mi respuesta con un método de extensión muy simple, pero sospecho que buscas algo más que eso ... –