Qui ci sono molte domande sulla conversione delle stringhe su un valore enum. In generale, la risposta sembra qualcosa di simile le risposte sulla this question:Perché Enum.Parse() restituisce l'oggetto?
StatusEnum MyStatus = (StatusEnum) Enum.Parse(typeof(StatusEnum), "Active", true);
Mentre questo è una risposta perfettamente ragionevole, e si può scrivere un metodo per semplificare la chiamata, non risponde alla domanda di perché Enum. Parse() restituisce un valore object
anziché il valore enum appropriato. Perché devo trasmetterlo a StatusEnum
?
Edit:
In sostanza, la domanda è perché è una funzione come questa non fa parte della classe Enum?
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
Questa funzione funziona perfettamente, fa esattamente quello che ti aspetteresti. StatusEnum e = Enum.Parse<StatusEnum>("Active");
.
@ SpYk3HH - Le enumerazioni non hanno * valori *. Sono * sono * valori. Sono valori che hanno un normale sovraccarico per '.ToString()', ma sono ancora solo valori. – Bobson
.NET 4.0+ ha ['Enum.TryParse'] (http://msdn.microsoft.com/en-us/library/dd783499 (v = vs.100)) –
@ SpYk3HH un valore di un tipo enum è un numero intero che può essere associato a uno dei campi del tipo enum. La dimensione del numero intero può variare. Parse prende una stringa e restituisce un'istanza in scatola del tipo enum. Questo può essere chiuso o no. Anche la tua ultima frase non ha senso. String e Boolean hanno anche proprietà e metodi su cui lavorare. – phoog