2012-01-12 3 views
1

В .Net 4.0, я использую System.Enum.GetValues(typeof(Gender)), чтобы получить список элементов перечисления.
В полном примере я использую для поиска значения перечислений следующим образом:Как Enum.GetValues ​​в .Net 3.5?

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 (Pocket PC)?
Заранее благодарим!

Я использую ответы ниже, но это не работает для меня. Вот код:

Enum Значения:

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

Я предполагаю, что Pocket PC использует .N ET Compact Framework? –

ответ

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