2010-04-30 72 views
6

比方说,我有这个类:C#:反映枚举名

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

而这个功能:

public class FooBar(SiteMapEntry.ChangeFrequency changeFreq) 
{ 

} 

被称为:

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

什么我需要做的在方法FooBarstring foobarNever == "never"

回答

17

changeFreq.ToString()将为您提供枚举值的字符串表示形式。

+3

而要走另一个方向,则需要'Enum.Parse(...)'。 – 2010-04-30 19:10:28

1

串foobarNever = “从不” :)

或者,你为什么不只是在做:

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

有与枚举交互的多种方式。为了获得最佳的实践,始终与定义的类型比较枚举:

if(changeFreq == ChangeFrequency.Never) 

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

,因为它是更具描述性的。如果您需要将字符串值转换为枚举类型,则使用

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