最初に型を知らずに列挙型を反復処理することは可能ですか?
列挙型の型を表す文字列名をメソッドに渡すとします。
次に、その文字列名から列挙型を取得し、コレクションを反復処理して、列挙型に含まれる名前/値を抽出する必要があります。
最初に型を知らずに列挙型を反復処理することは可能ですか?
列挙型の型を表す文字列名をメソッドに渡すとします。
次に、その文字列名から列挙型を取得し、コレクションを反復処理して、列挙型に含まれる名前/値を抽出する必要があります。
リフレクションを使用してそれを行うことができます
List<KeyValuePair<string, object>> GetEnumInfo(string name)
{
var type = Type.GetType(name);
return Enum.GetValues(type)
.Cast<object>()
.Select(v => new KeyValuePair<string, object>(Enum.GetName(type, v), v))
.ToList();
}
はい、型がわかっている場合は、列挙型の名前と値にアクセスできます。たとえば、次のコード スニペットを参照してください。
string enumTypeName = "qualified enum type name";
var enumType = Type.GetType(enumTypeName);
var values = Enum.GetValues(enumType);
var names = Enum.GetNames(enumType);
これで、簡単に反復してvalues
、names
Enum.GetValues(Type.GetType(yourEnumName, true, true));