using System;
using System.ComponentModel;
using System.Reflection;

namespace Znyc.Recruitment.Admin.Commons.Extensions
{
    /// <summary>
    ///     枚举类型的扩展
    /// </summary>
    public static class EnumExtensions
    {
        /// <summary>
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static string ToDescription(this Enum item)
        {
            string name = item.ToString();
            DescriptionAttribute desc = item.GetType().GetField(name)?.GetCustomAttribute<DescriptionAttribute>();
            return desc?.Description ?? name;
        }

        /// <summary>
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static long ToInt64(this Enum item)
        {
            return Convert.ToInt64(item);
        }

        /// <summary>
        ///     根据枚举的value获取枚举
        /// </summary>
        /// <param name="enumType">枚举的类型,示例:typeof(enum1)</param>
        /// <param name="value">可能的枚举值</param>
        /// <returns>枚举,示例:enum1.en1</returns>
        public static Enum ParseEnum(Type enumType, string value)
        {
            return Enum.Parse(enumType, value) as Enum;
        }
    }
}