enumに文字列の属性を付けてみました。画面IDをenumで持たせているので、enumに画面名を持たせられたら楽だなぁと思ったのがきっかけです。
ほとんどいげ太さんのコードを流用しています。.NET Compact Frameworkからの利用だったので、EnumクラスのGetNameメソッドが存在しておらず、そこだけ修正しています。
以下にサンプルコードを示します。
/// <summary> /// 属性で指定されたラベル文字列を取得する。 /// </summary> /// <param name="value">ラベル付きフィールド</param> /// <returns>ラベル文字列</returns> public static string GetLabel(Enum value) { Type enumType = value.GetType(); // .NET Compact FrameworkにはGetNameメソッドが存在しない // string name = Enum.GetName(enumType, value); string name = value.ToString(); LabeledEnumAttribute[] attrs = (LabeledEnumAttribute[])enumType.GetField(name) .GetCustomAttributes(typeof(LabeledEnumAttribute), false); return attrs[0].label; }