2010-04-30 20 views
6

Diciamo che ho questa classe:C#: Riflettendo nome enum

public class SiteMapEntry 
{ 
    public static enum ChangeFrequency 
    { 
     Always, 
     Hourly, 
     Daily, 
     Weekly, 
     Monthly, 
     Yearly, 
     Never 
    } 
} 

E questa funzione:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq) 
{ 

} 

che si chiama:

string foobarNever = FooBar(SiteMapEntry.ChangeFrequency.Never); 

che cosa devo fare nel metodo FooBar per avere il string foobarNever == "never"?

risposta

17

changeFreq.ToString() fornisce una rappresentazione in formato stringa del valore enum.

+3

E per andare nella direzione opposta, 'Enum.Parse (...)' è quello che ti serve. –

1

stringa foobarNever = "mai" :)

In alternativa, perché non sei solo facendo:

if(FooBar(SiteMapEntry.ChangeFrequency.Never) == SiteMapEntry.ChangeFrequency.Never) 
{} 
1

Ci sono diversi modi di interagire con enumerazioni. Per una migliore pratica, confronta sempre un enum con il tipo definito:

if(changeFreq == ChangeFrequency.Never) 

non

if(changeFreq.ToString() == "Never") 

come è più descrittivo. Se devi convertire un valore stringa nel tipo enum, usa

try 
{ 
    convertedValue = (ChangeFrequency)Enum.Parse(typeof(ChangeFrequency), stringValue); 
} 
catch 
{ 
    convertedValue = ChangeFrequency.Always; // Whatever default you want 
}