私は列挙型の値についてStringValue
属性を持っているので、私はそれぞれの値に説明を付けることができます:enum値属性のIEnumerable <string>を取得する方法はありますか
public class StringValueAttribute : Attribute
{
public string Value { get; private set; }
public StringValueAttribute(string value)
{
Value = value;
}
}
そして、それは私がそれを使用する方法です:
enum Group
{
[StringValue("Computer Science")]
ComputerScience,
[StringValue("Software Engineering")]
SoftwareEngineering,
// ... additional values follow.
}
私が取得する方法を持っていますA私がenum(列挙型そのものではなく、値)を取得する別の方法を持っていると思います
public static string GetStringValue(Enum value)
{
Type type = value.GetType();
FieldInfo fieldInfo = type.GetField(type.ToString());
StringValueAttribute[] attributes = fieldInfo.GetCustomAttributes(typeof(StringValueAttribute), false) as StringValueAttribute[];
string stringValue = null;
if (attributes.Length > 0)
{
stringValue = attributes[0].Value;
}
return stringValue;
}
:StringValue
は、列挙型の値を与えられましたndはGetStringValue
メソッドを使用してIEnumerable
を取得します。私はそれを達成する方法がわかりません。どのようにこのような方法ができますか?
編集:この質問はHow to get C# Enum description from value?の複製ではありません。列挙型の属性値を取得する方法は分かっていますが、実際には正確にそれを行う方法で質問をしています。私の質問は、enumのすべての属性を列挙する方法です。
は、あなたが 'GetStringValues()'一般的な方法をしたいわけ? –
dbc
独自のカスタム属性ではなく、既存の 'DescriptionAttribute'を使用することができます。 Enumer.GetValues(typeof(EnumType))。キャスト().Select(/ *あなたのメソッド* /)を呼び出します。 –
@dbc - それと同じようなものです。しかし、[ここ](https://stackoverflow.com/a/27101267/1925272)は、このようなメソッドを一般化しないことが推奨されています。 – Sipo