まず、同じ値を持つ 2 つのアイテムが必要な理由がわかりません。ただし、同じ列挙値が必要であるが、後で別の名前が必要な場合は、DescriptionAttribute
in System.ComponentModel
?を使用してみてください。
[Flags]
public enum MyEnum
{
[DescriptionAttribute("Item1")]Item1 = 32768,
[DescriptionAttribute("Item2")]Item2 = 65536,
[DescriptionAttribute("Item3")]Item3 = 524288,
[DescriptionAttribute("Item4")]Item4 = Item3
}
次に、このメソッドを使用して説明の値を取得できます。
public string ValueOf(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[]) fi.GetCustomAttributes( typeof(DescriptionAttribute), false);
if (attributes.Length > 0)
{
return attributes[0].Description;
}
else
{
return value.ToString();
}
}
私は実際にこれを試していないので、@MarcinJuraszek が投稿した MSDN の引用はここでも適用される可能性があります。
ソース: http://blog.waynehartman.com/articles/84.aspx