枚举中文转换为英文及调用

简介: 1.枚举 1 /// 2 /// 语言类别 3 /// 4 public enum LanguageType 5 { 6 [Description("所有语言")] 7 ...

1.枚举

 1 /// <summary>
 2         /// 语言类别
 3         /// </summary>
 4         public enum LanguageType
 5         {
 6             [Description("所有语言")]
 7             All = 0,
 8 
 9             [Description("中文")]
10             cn = 1,
11 
12             [Description("英文")]
13             en = 2,
14 
15             [Description("印度斯坦语")]
16             Hindustani = 3,
17 
18             [Description("西班牙语")]
19             Spanish = 4,
20 
21             [Description("俄语")]
22             Russian = 5,
23 
24             [Description("阿拉伯语")]
25             Arabic = 6,
26 
27             [Description("孟加拉语")]
28             Bengali = 7,
29 
30             [Description("葡萄牙语")]
31             Portuguese = 8,
32 
33             [Description("马来-印尼语")]
34             MalayIndonesian = 9,
35 
36             [Description("法语")]
37             French = 10,
38 
39             [Description("日语")]
40             Japanese = 11,
41 
42             [Description("韩语")]
43             Korean = 12
44         }
View Code

2.方法

  1 public class EnumHelp
  2     {
  3         public static string GetDescription(Enum obj)
  4         {
  5             string objName = obj.ToString();
  6             Type t = obj.GetType();
  7             FieldInfo fi = t.GetField(objName);
  8             DescriptionAttribute[] arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
  9 
 10             return arrDesc[0].Description;
 11         }
 12 
 13         /// <summary>
 14         /// 获取枚举值的详细文本
 15         /// </summary>
 16         /// <param name="e"></param>
 17         /// <returns></returns>
 18         public static string GetEnumDescription(object e)
 19         {
 20             //获取字段信息
 21             System.Reflection.FieldInfo[] ms = e.GetType().GetFields();
 22 
 23             Type t = e.GetType();
 24             foreach (System.Reflection.FieldInfo f in ms)
 25             {
 26                 //判断名称是否相等
 27                 if (f.Name != e.ToString()) continue;
 28 
 29                 //反射出自定义属性
 30                 foreach (Attribute attr in f.GetCustomAttributes(true))
 31                 {
 32                     //类型转换找到一个Description,用Description作为成员名称
 33                     System.ComponentModel.DescriptionAttribute dscript = attr as System.ComponentModel.DescriptionAttribute;
 34                     if (dscript != null)
 35                         return dscript.Description;
 36                 }
 37 
 38             }
 39 
 40             //如果没有检测到合适的注释,则用默认名称
 41             return e.ToString();
 42         }
 43 
 44 
 45         ///<summary>
 46         /// 返回 Dic<枚举项,描述>
 47         ///</summary>
 48         ///<param name="enumType"></param>
 49         ///<returns>Dic<枚举项,描述></returns>
 50         public static Dictionary<string, string> GetEnumDic(Type enumType)
 51         {
 52             Dictionary<string, string> dic = new Dictionary<string, string>();
 53             FieldInfo[] fieldinfos = enumType.GetFields();
 54             foreach (FieldInfo field in fieldinfos)
 55             {
 56                 if (field.FieldType.IsEnum)
 57                 {
 58                     Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
 59 
 60                     dic.Add(field.Name, ((DescriptionAttribute)objs[0]).Description);
 61                 }
 62 
 63             }
 64 
 65             return dic;
 66         }
 67 
 68 
 69         ///<summary>
 70         /// 从枚举类型和它的特性读出并返回一个键值对
 71         ///</summary>
 72         ///<param name="enumType">Type,该参数的格式为typeof(需要读的枚举类型)</param>
 73         ///<returns>键值对</returns>
 74         public static NameValueCollection GetNVCFromEnumValue(Type enumType)
 75         {
 76             NameValueCollection nvc = new NameValueCollection();
 77             Type typeDescription = typeof(DescriptionAttribute);
 78             System.Reflection.FieldInfo[] fields = enumType.GetFields();
 79             string strText = string.Empty;
 80             string strValue = string.Empty;
 81             foreach (FieldInfo field in fields)
 82             {
 83                 if (field.FieldType.IsEnum)
 84                 {
 85                     strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();
 86                     object[] arr = field.GetCustomAttributes(typeDescription, true);
 87                     if (arr.Length > 0)
 88                     {
 89                         DescriptionAttribute aa = (DescriptionAttribute)arr[0];
 90                         strText = aa.Description;
 91                     }
 92                     else
 93                     {
 94                         strText = field.Name;
 95                     }
 96                     nvc.Add(strValue, strText);
 97                 }
 98             }
 99             return nvc;
100         }
101     }
View Code

3.调用

1 protected string GetLanguageTypeName(int languageValue) {
2             Dictionary<string,string> dic = EnumHelp.GetEnumDic(typeof(CommonEnum.LanguageType));
3             string name = Enum.GetName(typeof(HX.Common.CommonEnum.LanguageType), languageValue);
4             
5             return dic[name];
6         }
View Code

 

目录
相关文章
|
C语言
C 语言实例 - 判断字母
用户输入一个字符,判断该字符是否为一个字母。
67 1
|
5月前
|
JavaScript
js 判断字符串是否包含中文,判断字符串是否全是中文,判断字符是否为中文
js 判断字符串是否包含中文,判断字符串是否全是中文,判断字符是否为中文
262 0
|
C#
C#小知识之中英文转换、去空格
# 一、中英文转换 ## 1、安装NPinYin ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231031-1f77b9b6.png?x-cos-security-token=kcWkaWALSQ5t0gKzZRkVwYOOBJMLQ8Ra8df6748cc017b8b22443671efb8aed172ct0qMmH-Si3jPfLmVc91udBHTdfdp2n1Qk-hBfLRQF5l22U2cHOMKfU7b0bWfl1t
209 0
C#小知识之中英文转换、去空格
|
7月前
如何去掉字符串中文括号及其内部的内容三种方式
如何去掉字符串中文括号及其内部的内容三种方式
270 0
写一个方法实现数字转中文大写的方法
之前开发了一个报销相关的应用,其中遇到了小写数字转中文大写的需求,搜寻了一些资料以后对方法进行了改进,现在分享出来给大家参考
写一个方法实现数字转中文大写的方法
|
PHP
php公用函数:获取字符串中英文混合长度
php公用函数:获取字符串中英文混合长度
47 0
|
JSON 小程序 前端开发
小程序根据返回值英文渲染出对应的中文
小程序根据返回值英文渲染出对应的中文
48 0
|
C++
C++实现中文大写与阿拉伯数字的相互转换(类封装)
C++实现中文大写与阿拉伯数字的相互转换(类封装)
662 0
零基础VB教程034期:统计与分离字符串文本中的数字字母等
零基础VB教程034期:统计与分离字符串文本中的数字字母等
116 0
|
存储 索引 Python
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
154 0
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字