C# で人間が判読できる文字列を含む列挙型を表示する
列挙型は名前付き定数を表すのに役立ちますが、その値を直接表示すると、ユーザーにとって分かりにくくなることがよくあります。このガイドでは、文字列から値への逆変換を行わずに、列挙値を使いやすい文字列にマップする方法を説明します。
このソリューションは、Description
の System.ComponentModel
属性を利用します。 この属性を列挙メンバーに適用すると、各値によりわかりやすいラベルを付けることができます。
例:
<code class="language-csharp">private enum PublishStatusValue { [Description("Not Completed")] NotCompleted, Completed, Error }</code>
ユーザーフレンドリーな文字列の取得:
次の拡張メソッドは、説明が見つからない場合は、説明または列挙型のデフォルトの文字列表現を取得します。
<code class="language-csharp">public static string GetDescription<T>(this T enumerationValue) where T : struct { Type type = enumerationValue.GetType(); if (!type.IsEnum) { throw new ArgumentException("EnumerationValue must be of Enum type", "enumerationValue"); } MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString()); if (memberInfo != null && memberInfo.Length > 0) { object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { return ((DescriptionAttribute)attrs[0]).Description; } } return enumerationValue.ToString(); }</code>
このメソッドは、ユーザーフレンドリーな出力を効率的に提供し、コードの可読性とユーザーエクスペリエンスを向上させます。
以上がC# で列挙型からユーザーフレンドリーな文字列を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。