備忘録

備忘録

C#でenumに任意の文字列(string)を設定する方法

Ⅰ. はじめに

タイトルの通り「C#enumに任意の文字列(string)を設定する方法」です。

Ⅱ. サンプルプログラム1

Install-Package FastEnum

Program.cs

enum Company
{
  [EnumMember(Value = "Apple, Inc.")]
  Apple = 0,
}

class Program
{
  static void Main()
  {
    Company.Apple.GetEnumMemberValue();
  }
}

実行結果

省略

Ⅲ. サンプルプログラム2

EnumExtensions.cs

public static class EnumExtensions
{
  public static string GetDescription(this Enum value)
  {
    var field = value.GetType().GetField(value.ToString());
    var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
    if (attribute != null)
    {
      return attribute.Description;
    }
    else
    {
      return value.ToString();
    }
  }
}

Program.cs

class Program
{
  enum Prefecture
  {
    [Description("北海道")]
    Hokkaido,

    [Description("青森")]
    Aomori,

    [Description("岩手")]
    Iwate
  }

  static void Main(string[] args)
  {
    var prefecture = Prefecture.Hokkaido;

    Console.WriteLine(prefecture);
    Console.WriteLine(prefecture.GetDescription());
  }
}

実行結果