enum+中文
from http://gacken.com/blog/program/csharp-308_20180710/
DescriptionAttribute属性を使用することで、enum値に文字列情報を紐付けることができます。
まず、enumの各定義値にDescription属性を付加し、紐付ける文字列を設定しておきます。
1
2
3
4
5
6
7
8
9
10
11
| enum HogeSize{ [Description("しょう")] Small, [Description("ちゅう")] Middle, [Description("だい")] Large,} |
そして、引数で渡されたenum値に紐付けられた文字列を取得するメソッドを実装。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| /// <summary>/// 列挙体フィールドのDescriptionを取得する。/// </summary>/// <param name="value">列挙体値</param>/// <returns>Description文字列</returns>public static string GetEnumDescription(object value){ string description = null; try { if (value != null) { string strValue = value.ToString(); if (0 < strValue.Length) { FieldInfo fi = value.GetType().GetField(strValue); Attribute attr = Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute)); if (attr != null) { DescriptionAttribute descAttr = (DescriptionAttribute)attr; description = descAttr.Description; } } } } catch { description = value.ToString(); } return description;} |
こんな感じで使います。
1
2
3
4
5
6
7
8
9
10
11
12
13
| public void Main(){ string strVal; strVal = GetEnumDescription(HogeSize.Small); Console.WriteLine(strVal); strVal = GetEnumDescription(HogeSize.Middle); Console.WriteLine(strVal); strVal = GetEnumDescription(HogeSize.Large); Console.WriteLine(strVal);} |
留言
張貼留言