Personalmente, mentre io sono totalmente bene con la soluzione Enum.Parse per gli scenari non-prestazioni (leggi: una tantum run di questa funzione occasionalmente ... e ci sono molti scenari di questo genere per essere sicuri), non riesco a tollerare il pensiero di possibilmente coinvolgere qualche metodo di tipo reflection quando questa funzione deve essere eseguita in un ciclo su centinaia/migliaia più i valori enum contemporaneamente.Gack!
Quindi la seguente è una soluzione che ottiene alcuni dei migliori di entrambi i mondi.
È sufficiente recuperare tutti i valori dell'enumerazione all'avvio o in caso contrario, ogni volta che funziona meglio (di seguito è riportato un modo per farlo) e quindi creare un dizionario con essi.
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;
}
}
fonte
2012-12-03 05:04:46
Ho pensato che non è possibile attivare le stringhe. –
@Ramon: ti sbagli: in C# siamo sempre stati in grado di attivare le stringhe. –
@ Ramon: certo che puoi. –