[Silverlight] Enum.GetValues()の代替手段

9:23 PM on 2011年5月23日 ,

SilverlightではEnum.GetValues()が使えない?
そのため、enumの値を列挙する場合等には以下の方法で代替する。

// Tに対象のenumの型を指定する
public static List GetValues()
{
    Type t = typeof(T);
    if (!t.IsEnum)
    {
        throw new ArgumentException();
    }

    List values = new List();
    var fields = from field in t.GetFields() where field.IsLiteral select field;
    foreach (FieldInfo field in fields)
    {
        object value = field.GetValue(t);
        values.Add((T)value);
    }

    return values;
}