20 Nisan 2018

C# Enumlarda Description Okuma

using System;
using System.ComponentModel;

namespace Demo
{

    [Flags]
    public enum Directions
    {
        [Description("Doğu")]
        E = 0,

        [Description("Kuzey Doğu")]
        NE = 1,

        [Description("Kuzey")]
        N = 2,

        [Description("Kuzey Batı")]
        NW = 3,

        [Description("Batı")]
        W = 4,

        [Description("Güney Batı")]
        SW = 5,

        [Description("Güney")]
        S = 6,

        [Description("Güney Doğu")]
        SE = 7,
    }


    public static class EnumsExtensions
    {
        public static string GetDescription(this Enum enumerationValue)
        {
            var type = enumerationValue.GetType();
            var memberInfo = type.GetMember(enumerationValue.ToString());
            if (memberInfo.Length > 0)
            {
                var attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);

                if (attrs.Length > 0)
                {
                    return ((DescriptionAttribute)attrs[0]).Description;
                }
            }
            return enumerationValue.ToString();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Directions.E.GetDescription());
            Console.WriteLine(Directions.NE.GetDescription());
            Console.WriteLine(Directions.N.GetDescription());
            Console.WriteLine(Directions.NW.GetDescription());
            Console.WriteLine(Directions.W.GetDescription());
            Console.WriteLine(Directions.SW.GetDescription());
            Console.WriteLine(Directions.S.GetDescription());
            Console.WriteLine(Directions.SE.GetDescription());            
        }
    }
}