首页 > 其他分享 >一个枚举的通用的方法,根据传入字符串,返回对应枚举类型

一个枚举的通用的方法,根据传入字符串,返回对应枚举类型

时间:2023-10-11 11:57:14浏览次数:40  
标签:Description 传入 attribute System value var 枚举 字符串

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

public static class EnumHelper
{
    // 一个泛型方法,接受一个泛型类型T和一个字符串s作为参数
    public static T GetEnumByDescription<T>(string s) where T : Enum
    {
        // 获取T的所有枚举值
        var values = Enum.GetValues(typeof(T));
        // 遍历每个枚举值
        foreach (var value in values)
        {
            // 获取枚举值的Description特性,如果有的话
            var field = value.GetType().GetField(value.ToString());
            var attribute = field.GetCustomAttribute<DescriptionAttribute>();
            // 如果Description特性的值和字符串s匹配,就返回对应的枚举值
            if (attribute != null && attribute.Description == s)
            {
                return (T)value;
            }
        }
        // 如果没有匹配的枚举值,就抛出异常
        throw new ArgumentException("No matching enum value found.");
    }
}

 

标签:Description,传入,attribute,System,value,var,枚举,字符串
From: https://www.cnblogs.com/xiangshifu/p/17756726.html

相关文章

  • 04-Shell字符串变量
    1.字符串变量的三种方式字符串(String)就是一系列字符的组合。字符串是Shell编程中最常用的数据类型之一(除了数字和字符串,也没有其他类型了)单引号方式双引号方式,推荐不用引号方式var='abc'var2="abc"var3=abc1.1三种格式的区别使用单引号''的字符串:任......
  • 在JavaScript中,如何替换所有出现的字符串?
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中,如何替换所有出现的字符串?给定一个字符串:s="Testabctesttestabctesttesttestabctesttestabc";这似乎只删除了上面字符串中的第一个abc:s=s.replace('abc','');如何替换所有的它的出现?在大多数流......
  • 力扣-2744-最大字符串配对数目
    给你一个下标从0开始的数组words,数组中包含互不相同的字符串。如果字符串words[i]与字符串words[j]满足以下条件,我们称它们可以匹配:字符串words[i]等于words[j]的反转字符串。0<=i<j<words.length请你返回数组words中的最大匹配数目。注意,每个字符串最......
  • C# BYTE[] 与16进制字符串互相转换
     byte[]转16进制字符串方法一、byte[]resultArray=newbyte[]{1,2,3,4,5,6,7,8,9};BitConverter.ToString(resultArray).Replace("-","") 方法二、  ///<summary>///字节数组转16进制字符串///</summary>///<paramname="bytes"><......
  • 【C++ Primer】字符串和数组
    一、命名空间的using声明1、using声明:usingnamespace::name,例如:usingstd::cin。一旦声明了上述语句,就可以直接访问命名空间的变量。每个变量都需要using声明,位于头文件中的代码不应该使用using声明。2、using编译:usingnamespacestd;直接使用整个命名空间。使用using声明比使用us......
  • .Net Core 统一全局处理字符串为Null问题
    services.AddControllersWithViews().AddNewtonsoftJson(options=>{//设置序列化时间格式options.SerializerSettings.DateFormatString="yyyy-MM-ddHH:mm:ss";options.Serializ......
  • .Net Core 中GUID字符串的几种格式化
    NET下的Guid格式化有如下五种:1.Guid.NewGuid().ToString("N")获取32位不包含“-”号的GUID字符串例如:1c64d58a9e834bfe8d053555d81453d02.Guid.NewGuid().ToString("D")获取32位包含“-”号的GUID字符串,默认格式例如:ae8672ac-a987-43f3-a7c2-ac7b3249ac7b3.Guid.NewGuid().......
  • Go字符串实战操作大全!
    在本篇文章中,我们深入探讨了Go语言中字符串的魅力和深度。从基础定义、操作、字符编码到复杂的类型转换,每个环节都带有实例和代码示例来深化理解。通过这些深入的解析,读者不仅能够掌握字符串在Go中的核心概念,还能洞察Go设计哲学背后的思考。关注公众号【TechLeadCloud】,分享互......
  • vue中的循环遍历对象、数组和字符串
    vue循环遍历对象、数组和字符串1.循环遍历对象1.1vue在html里面循环遍历对象v-for="(val,key,i)indimItemMap":key="key" val-每一项key-key值i-第几个<el-table-columnprop="score"label="评分":show-overflow-tooltip="true"ali......
  • Postgresql 截取字符串
    截取字符串一般用substring就够用了。对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割。  这时需要​​split_part​​函数,如:--url一共3个-,字符串被分成4部分,取最后一部分,那最后一个参数就是4selectsplit_part(fs.cdn_url,'-',4)fromfile......