須要匹配的枚舉描述

using System;
using System.ComponentModel;
namespace ConsoleApp1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var value = GetEnumValueByDescription("在讀", typeof(StudentStatusEnum));
            Console.WriteLine(value.ToString());
            Console.ReadKey();
        }
        #region 根據枚舉描述獲取枚舉值
        /// <summary>
        /// 根據枚舉描述獲取枚舉值
        /// </summary>
        /// <param name="description">須要匹配的枚舉描述</param>
        /// <param name="en">枚舉類型</param>
        /// <returns></returns>
        public static object GetEnumValueByDescription(string description, Type en)
        {
            var fields = en.GetFields();
            for (int i = 1, count = fields.Length; i < count; i++)
            {
                var value = (int)Enum.Parse(en, fields[i].Name);
                var enumAttributes = (DescriptionAttribute[])fields[i].GetCustomAttributes(typeof(DescriptionAttribute), false);
                if (enumAttributes.Length > 0)
                {
                    var desc = enumAttributes[0].Description;
                    if (desc == description)
                    {
                        return value;
                    }
                }
            }

            return null;
        }
        #endregion
    }
    /// <summary>
    ///     學生狀態
    /// </summary>
    public enum StudentStatusEnum
    {
        /// <summary>
        ///     在讀
        /// </summary>
        [Description("在讀")] Study = 0,
        /// <summary>
        ///     畢業
        /// </summary>
        [Description("畢業")] Graduate = 1,
        /// <summary>
        ///     退學
        /// </summary>
        [Description("退學")] Leave = 2,
        /// <summary>
        ///     休學
        /// </summary>
        [Description("休學")] Suspend = 3
    }
}
相關文章
相關標籤/搜索