C#

[C#] enum値に文字列情報を紐付ける方法

DescriptionAttribute属性を使用することで、enum値に文字列情報を紐付けることができます。

まず、enumの各定義値にDescription属性を付加し、紐付ける文字列を設定しておきます。

enum HogeSize
{
    [Description("しょう")]
    Small,

    [Description("ちゅう")]
    Middle,

    [Description("だい")]
    Large,
}

 

そして、引数で渡されたenum値に紐付けられた文字列を取得するメソッドを実装。

/// <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;
}

 

こんな感じで使います。

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);
}

 
 

-C#
-,