C# 中自定义DescriptionAttribute值的获取与优化

枚举类:

public enum CreditStatus : int

        {
            /// <summary>
            /// 待审核
            /// </summary>
            [Description("待审核")]
            Init = 1,
            /// <summary>
            /// 已审核
            /// </summary>
            [Description("已审核")]
            Pending = 2,
            /// <summary>
            /// 已放款
            /// </summary>
            [Description("已放款")]
            Paymented = 3

        }

public static class EnumHelper

    {
        /// <summary>
        /// 获取枚举Description Attribute的值
        /// </summary>
        /// <param name="value">枚举</param>
        /// <returns></returns>
        public static string GetDescription(object value)
        {
            if (value == null)
            {
                return string.Empty;
            }
            var field = value.GetType().GetField(value.ToString());


            if (field == null)
            {
                return string.Empty;
            }


            var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;


            return attribute == null ? value.ToString() : attribute.Description;
        }


        /// <summary>
        /// 获取枚举Description Attribute的值
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <param name="value">枚举值</param>
        /// <returns></returns>
        public static string GetDescription<T>(int? value)
        {
            if (value == null)
            {
                return string.Empty;
            }
            return GetDescription((T)System.Enum.Parse(typeof(T), value.Value.ToString()));
        }

    }

调用方法示例:

public string StatusDesc 
        {
            get
            {
               return EnumHelper.GetDescription<Model.Enum.CreditStatus>(CreditStatus.GetValueOrDefault(1));
            }
        }

猜你喜欢

转载自blog.csdn.net/qq_18145031/article/details/79928040