开发者社区> 多吉> 正文

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

简介: 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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
31 0
Python编程:判断字符串中是否包含中文
Python编程:判断字符串中是否包含中文
174 0
Java判断字符串中是否包含中英文标点符号
Java判断字符串中是否包含中英文标点符号 /** * 该函数判断一个字符串是否包含标点符号(中文英文标点符号)。
5164 0
平常我们所说的“字符集”,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义
各个国家和地区所制定的不同 ANSI 编码标准中,都只规定了各自语言所需的“字符”。比如:汉字标准(GB2312)中没有规定韩国语字符怎样存储。这些 ANSI 编码标准所规定的内容包含两层含义:1. 使用哪些字符。
796 0
c# 中文转拼音的函数代码
using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace AppUtility { /// /// 获得汉字的拼音 ...
1003 0
C# 判断中文字符(字符串)-整理
  http://www.cnblogs.com/xiexiaokui/archive/2007/11/07/952655.html 方法一http://blog.csdn.net/qiujiahao/archive/2007/08/09/1733169.aspx在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs。
1066 0
+关注
多吉
数据库相关技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载