首页 > 编程语言 >C# 枚举高级用法之Description

C# 枚举高级用法之Description

时间:2023-10-26 10:23:08浏览次数:39  
标签:Console Description C# DB 枚举 static attrs var

在主函数中:

public enum DB
{
    [Description("读")]write = 1,
    [Description("写")]read  = 2,
}

private static void Main(string[] args)
{
    //第一种方法
    Console.WriteLine(DB.write.ToDescription());
    Console.WriteLine(DB.read.ToDescription() + "\n");
    //第二种方法
    Console.WriteLine(DB.write.GetDescription());
    Console.WriteLine(DB.read.GetDescription());

    Console.ReadKey();
}

 新创一个类文件MyException.cs:

public static class MyException
{
    /// <summary>
    /// 获取枚举类型的描述
    /// </summary>
    /// <param name = "enumeration"> </param>
    /// <returns> </returns>
    public static string ToDescription(this Enum enumeration)
    {
        var type    = enumeration.GetType();
        var memInfo = type.GetMember(enumeration.ToString());
        if (null != memInfo && memInfo.Length > 0)
        {
            var attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (null != attrs && attrs.Length > 0)
            {
                return ((DescriptionAttribute) attrs[0]).Description;
            }
        }

        return enumeration.ToString();
    }

    /// <summary>
    /// 获取枚举类型的描述
    /// </summary>
    /// <param name = "val"> </param>
    /// <returns> </returns>
    public static string GetDescription(this Enum val)
    {
        var field           = val.GetType().GetField(val.ToString());
        var customAttribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute));
        return customAttribute == null ? val.ToString() : ((DescriptionAttribute) customAttribute).Description;
    }
}

 结果:

标签:Console,Description,C#,DB,枚举,static,attrs,var
From: https://www.cnblogs.com/shieryoufeng/p/17788805.html

相关文章

  • 如何传递环境变量给Docker容器
    在Linux命令行中,可以使用-e选项来传递环境变量给Docker容器。这样,我们可以在运行容器的同时设置特定的环境变量,以满足应用程序的需求。下面将详细介绍如何使用Linux命令行传递环境变量给Docker容器。1、DockerRun命令:最常用的方法是在使用dockerrun命令时,通过-e选项传递环......
  • TCP Socket性能优化秘籍
    一、引言1.1、TCPSocket在网络通信中的重要性TCPSocket在网络通信中的重要性体现在其提供了可靠的数据传输、连接性、多路复用等特性,是实现各种网络应用的基础,同时具有广泛的兼容性。它的存在使得网络通信更加可靠、高效和方便。其重要性如下:可靠性:TCP(传输控制协议)是一种可......
  • LeCun和Bengio“吵”起来了,人工智能是“潘多拉魔盒”吗?
    作者|谢年年上周末,深度学习领域最有影响力的三巨头之二YannLeCun和YoshuaBengio就AI的潜在风险和安全问题引发了一场激烈辩论,人工智能是“潘多拉魔盒”吗?这场辩论引来众多AI知名人士围观。LeCun在Facebook上发起了这场辩论,并呼吁那些相信人工智能的力量和可靠性的“沉默大多数......
  • docker 日志处理
    手动清理cat/dev/null>*-json.log启动时添加配置dockerrun--log-driver=json-file--log-optmax-size=10mmy-container脚本#!/bin/shecho"====================startcleandockercontainerslogs=========================="logs=$(find/var/lib/docker/cont......
  • Linux | C库的制作
    Linux|C库的制作......
  • Openstack组件介绍
    Openstack七大组件介绍,OpenStack是一套laas解决方案,OpenStack是一个开源的云计算管理平台,以Apache许可证为授权Horizon组件——Horizon为OpenStack服务的Web控制面板,可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。——Horizon具有如下一些特点:——实力管理:创建、......
  • c++中的继承(下)
    首先我们先回忆一下,在派生类(子类)中默认的成员函数做了什么事情?我们现在可以这么认为对于普通类来说呢?只需要看待两个部分的成员:内置类型和自定义类型。而对于派生类而言序言看待三个部分的成员:内置类型,自定义类型以及父类类型构造和析构拷贝构造普通类对于内置类型一般不处理,自定类......
  • OpenCV4 :基础图像处理与操作(一)
    OpenCV4:基础图像处理与操作(一)目录图像的基本概念与术语图像表示基础术语图像读取与显示方法C++示例色彩空间的理解与转换色彩空间RGB(红绿蓝)CMYK(青色、黄色、品红、黑色)HSV(色相、饱和度、明度)色彩转换图像对象的创建与赋值C++示例基础图像操作:像素读写与算术运算像素读写算术运......
  • OpenCV4 :并行计算cv::parallel_for_
    OpenCV4:并行计算cv::parallel_for_在计算机视觉和图像处理领域,OpenCV(开源计算机视觉库)是一个非常强大和广泛使用的库。随着图像分辨率的提高和计算任务的复杂度增加,实时处理变得越来越困难。为了解决这个问题,OpenCV提供了并行处理能力,可以显著提高代码的性能。本文将介绍如何利用O......
  • gerrit 将他人改动直接 打patch到自己代码上
    原文:https://blog.csdn.net/qq_21438461/article/details/131362485 在Linux中,patch命令用于将补丁文件应用到源代码文件中,从而实现对源代码的修改。patch命令的详细描述如下:patch命令用于将补丁文件应用到源代码文件中,以实现对源代码的修改。补丁文件通常是由开发者或者社区......