c# 获取枚举注释

1.定义标签和获取标签值的方法

namespace Comm
{
    public static class EnumHelper
    {
        /// <summary>
        /// 得到枚举的DescriptionAttribute值。
        /// </summary>
        /// <typeparam name="TEnum"></typeparam>
        /// <param name="value"></param>
        /// <returns></returns>
        static public string GetEnumDescription<TEnum>(object value)
        {
            Type enumType = typeof(TEnum);
            if (!enumType.IsEnum)
                throw new ArgumentException("不是枚举类型");
            var name = Enum.GetName(enumType, value);
            if (name == null)
                return string.Empty;
            object[] objs = enumType.GetField(name).GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (objs == null || objs.Length == 0)
                return string.Empty;
            DescriptionAttribute attr = objs[0] as DescriptionAttribute;
            return attr.Description;
        }
    }

    public class DescriptionAttribute : Attribute
    {
        private string _description;

        public DescriptionAttribute(string desc)
        {
            _description = desc;
        }

        public string Description
        {
            get
            {
                return _description;
            }
        }
    }
}

2.使用标签和获取标签值的方法

public enum State
{
    [Description("是")]
    Yes = 1,

    [Description("否")]
    No = 2
}

string str = EnumHelper.GetEnumDescription<State>(State.Yes);

  

posted @ 2017-09-25 11:24  by-lhc  阅读(1417)  评论(0)    收藏  举报