src/DotNetCommon.Core/Extensions/EnumExtensions.cs

(开头部分) 16KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace DotNetCommon.Extensions
{
    /// <summary>
    /// <seealso cref="Enum"/> 扩展类
    /// </summary>
    public static class EnumExtensions
    {
        /// <summary>
        /// 将枚举转为由code、desc键值对组成的集合,<para></para>
        /// 如: EnumTest{ [Description("A描述")]A, B, C},默认转换为: <para></para>
        /// {<para></para>
        /// (0,"A描述"),<para></para>
        /// (1,"B"),<para></para>
        /// (2,"C")<para></para>
        /// }<para></para>
        /// </summary>
        /// <param name="item">枚举项</param>
        /// <param name="useNameForKeyIfNoDescription">当枚举项上不存在[Description]特性时,是否使用枚举的Key值作为描述</param>
        /// <remarks>枚举的code是数字,key是定义时的名称,desc是[Description]中的值</remarks>
        /// <returns></returns>
        public static List<(int code, string desc)> ToCodeDescriptionList(this System.Enum item, bool useNameForKeyIfNoDescription = true)
        {
            return item.ToCodeKeyDescriptionList(useNameForKeyIfNoDescription).Select(i => (i.code, i.desc)).ToList();
        }

        /// <summary>
        /// 将枚举转为由code、key键值对组成的集合,<para></para>
        /// 如: EnumTest{ [Description("A描述")]A, B, C},默认转换为: <para></para>
        /// {<para></para>
        /// (0,"A"),<para></para>
        /// (1,"B"),<para></para>
        /// (2,"C")<para></para>
        /// }<para></para>
        /// </summary>
        /// <param name="item">枚举项</param>
        /// <remarks>枚举的code是数字,key是定义时的名称,desc是[Description]中的值</remarks>
        /// <returns></returns>
        public static List<(int code, string key)> ToCodeKeyList(this System.Enum item)
        {
            return item.ToCodeKeyDescriptionList(false).Select(i => (i.code, i.key)).ToList();
        }

        /// <summary>
        /// 将枚举转为由key、code键值对组成的集合,<para></para>
        /// 如: EnumTest{ [Description("A描述")]A, B, C},默认转换为: <para></para>
        /// {<para></para>
        /// ("A",0),<para></para>
        /// ("B",1),<para></para>
        /// ("C",2)<para></para>
        /// }<para></para>
        /// </summary>
后面还有 342 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。