Enum.GetValues()

.Net/Windows Phone 2012.06.05 17:11

WPF 에서는 당연한듯 썼던 Enum.GetValues() 가 없다. (실버라이트 동일)

열거형 타입의 모든 값을 가져와서 ListPicker 에 바인딩 시킬려고 했는데 너무 손이 많이 갔다.

아이템을 수동으로 추가하는 방법도 있으나 맘에 안들고...

 

찾던중 발견한 링크.

http://cjbhaines.wordpress.com/2011/07/12/enum-getvalues-in-silverlight/

 

아래는 소스.

 

using System.Linq;

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Diagnostics;

 

namespace BloodAria.MyMusic.Common
{
    public static class EnumHelper
    {
        public static T[] GetValues<T>()
        {
            Type enumType = typeof(T);
            if (!enumType.IsEnum)
                throw new ArgumentException("Type '" + enumType.Name + "' is not an enum");

            IEnumerable<FieldInfo> fields = enumType.GetFields().Where(field => field.IsLiteral);

            return fields.Select(field => field.GetValue(enumType)).Select(value => (T)value).ToArray();
        }
    }
}

 

설정

트랙백

댓글