Enumに任意の文字列を割り振る

[C#] 何故 enum に拘りたくなるのか? | Moonmile Solutions Blog
http://www.moonmile.net/blog/archives/3666

c# - Extension Methods for IEnumerable? - Stack Overflow
http://stackoverflow.com/questions/5162389/extension-methods-for-ienumerableenum

c# - How can an Enumeration with Descriptions be cast into a Dictionary? - Code Review Stack Exchange
http://codereview.stackexchange.com/questions/12173/how-can-an-enumeration-with-descriptions-be-cast-into-a-dictionary

カスタム属性の記述
https://msdn.microsoft.com/ja-jp/library/84c42s56(v=vs.110).aspx

属性に格納されている情報の取得
https://msdn.microsoft.com/ja-jp/library/71s1zwct(v=vs.110).aspx



VB.NET
既存の属性を使用。Enumならなんでもに改変してある。
便利そう!って思ってやったんだけど使った事はない。

Public Enum MyEnum
    <Description("Army of One")>
    One
    Two
    Three
    Four
    Five
End Enum

Public Module MyEnumExtention
    <Extension()>
    Public Function GetDescription(currentEnum As [Enum]) As String
        Dim fi = currentEnum.GetType().GetField(currentEnum.ToString())
        Dim da = TryCast(Attribute.GetCustomAttribute(fi, GetType(DescriptionAttribute)), DescriptionAttribute)
        Return If(da IsNot Nothing, da.Description, currentEnum.ToString())
    End Function
End Module