Personalmente, mientras estoy totalmente bien con la solución Enum.Parse para escenarios de irregularidad (es decir: uno despegue de esta función de vez en cuando ... y hay muchos escenarios de este tipo para estar seguros), no puedo tolerar la posibilidad de que se involucre algún método de tipo de reflexión cuando esta función se debe realizar en un bucle sobre cientos/miles más valores enum a la vez.Gack!
Así que la siguiente es una solución que obtiene lo mejor de ambos mundos.
Simplemente recupere todos los valores de la enumeración en el momento del inicio o lo que no, siempre que le parezca mejor (a continuación hay una forma de hacerlo), y luego construya un diccionario con ellos.
private static Dictionary<string, Color> colorDictionary;
public static Dictionary<string, Color> ColorDictionary
{
get
{
if (colorDictionary== null) {
colorDictionary = new Dictionary<string, Color>();
var all = Enum.GetValues(typeof(Color)).OfType<Color>();
foreach (var val in all)
dict.Add(val.ToString(), val);
}
return colorDictionary;
}
}
Pensé que no podía hacer el cambio en las cadenas. –
@Ramon: Te equivocas: en C# siempre hemos sido capaces de activar las cadenas. –
@Ramon: Por supuesto que puedes. –