2012-01-12 37 views
1

在.Net 4.0中,我使用System.Enum.GetValues(typeof(Gender))来获取枚举项的列表。
在一个完整的例子,我用它来寻找枚举值以这样的方式如何在.net 3.5中枚举Enum.GetValues?

Gender retVal = Gender.Male; 

    foreach (Gender enumType in System.Enum.GetValues(typeof(Gender))) 
    { 
     if (enumType.ToString().Trim().ToUpper().Substring(0,1).Equals(stringToEnum.Trim().ToUpper())) 
     { 
      retVal = enumType; 
      break; 
     } 
    } 

但我怎么能做到这一点的。Net 3.5(掌上电脑)?
在此先感谢!

我使用下面的答案,但它不适合我。下面的代码:

枚举值:

namespace Ionic.Zlib 
{ 
    public enum CompressionLevel 
    { 
     Level0 = 0, 
     None = 0, 
     Level1 = 1, 
     BestSpeed = 1, 
     Level2 = 2, 
     Level3 = 3, 
     Level4 = 4, 
     Level5 = 5, 
     Level6 = 6, 
     Default = 6, 
     Level7 = 7, 
     Level8 = 8, 
     BestCompression = 9, 
     Level9 = 9, 
    } 
} 

用法:

我只是想念初始化新的对象。这就是现在的工作:

public static Ionic.Zlib.CompressionLevel GetCompressionLevel(string Expression) 
{ 
    Ionic.Zlib.CompressionLevel result = Ionic.Zlib.CompressionLevel.None; 
    foreach (Ionic.Zlib.CompressionLevel item in EnumGetValues(new Ionic.Zlib.CompressionLevel())) 
    { 
     if(object.Equals(item.ToString().Trim().ToUpper(), Expression.Trim().ToUpper())) 
     { 
      result = item; 
      break; 
     } 
    } 
    return result; 
} 
+0

我认为掌上电脑使用.N ET Compact Framework? – 2012-01-12 12:44:14

回答

5

有一个博客文章here(存档here),它通过反射实现它:

public IEnumerable<Enum> GetValues(Enum enumeration) 
{ 
    List<Enum> enumerations = new List<Enum>(); 
    foreach (FieldInfo fieldInfo in enumeration.GetType().GetFields(BindingFlags.Static | BindingFlags.Public)) 
    { 
     enumerations.Add((Enum)fieldInfo.GetValue(enumeration)); 
    } 
    return enumerations; 
} 
+0

谢谢!它现在有效! – fiberOptics 2012-01-12 13:39:50