説明属性に基づいて列挙値を取得します
一部のプログラミング シナリオでは、列挙に関連付けられた説明属性に基づいて列挙値を取得する必要があります。これは、説明的なラベルを持つ列挙を操作する場合に特に便利です。
は、Enum.GetValueFromDescription()
メソッドを使用して実現できます。ただし、このメソッドは .NET Framework には存在しません。この欠点を補うためにカスタム拡張メソッドを実装できます。次のコード スニペットは、そのような実装を示しています。
<code class="language-csharp">public static class EnumEx { public static T GetValueFromDescription<T>(string description) where T : Enum { foreach (var field in typeof(T).GetFields()) { if (Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) is DescriptionAttribute attribute) { if (attribute.Description == description) return (T)field.GetValue(null); } else { if (field.Name == description) return (T)field.GetValue(null); } } throw new ArgumentException("未找到。", nameof(description)); // 或者返回 default(T); } }</code>
使用方法:
<code class="language-csharp">var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");</code>
GetValueFromDescription
メソッドを呼び出すことにより、指定された description プロパティに対応する列挙値を取得できます。このメソッドは列挙型のフィールドを反復処理し、DescriptionAttribute
属性をチェックし、一致する場合は対応する値を返します。一致する記述が見つからない場合は、実装に応じて例外がスローされるか、列挙型のデフォルト値が返されます。
以上がC# で説明属性から列挙値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。