Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9749

Enumに別名を与えて、拡張メソッドで取得する

$
0
0
メモ書き 自前のカスタム属性 using System; [AttributeUsage(AttributeTargets.Field, AllowMultiple =false, Inherited =false)] public class AliasNameAttribute: Attribute { public AliasNameAttribute(string value) { this.AliasName = value; } public string AliasName { get; } } カスタム属性を持つEnumを定義する public enum Fruits { [AliasName("リンゴ")] Apple, [AliasName("オレンジ")] Orange, [AliasName("ブドウ")] Grape } 別名を取得する拡張メソッドを作る using System; using System.Linq; public static class AttributeExtention { public static string ToAliasName(this Enum value) { return value .GetType() .GetField(value.ToString()) .GetCustomAttributes(typeof(AliasNameAttribute), false) .Cast<AliasNameAttribute>() .FirstOrDefault()?.AliasName ?? value.ToString(); } } 使い方 // Apple → リンゴ var appleName = Fruits.Apple.ToAliasName(); // Orange → オレンジ var orangeName = Fruits.Orange.ToAliasName(); // Grape → ブドウ var grapeName = Fruits.Grape.ToAliasName();

Viewing all articles
Browse latest Browse all 9749

Trending Articles