4

列挙型の型 (System.Type) と、設定する列挙値を含む文字列があります。

例:

enum MyEnum { A, B, C };

typeof(MyEnum) と "B" があります。

MyEnum.B に設定された MyEnum オブジェクトを作成するにはどうすればよいですか?

4

3 に答える 3

16
MyEnum enumValue = (MyEnum)Enum.Parse(typeof(MyEnum), "B");

大文字と小文字を区別しないオーバーロードもあります。

于 2008-10-03T22:21:17.043 に答える
3

MyEnum にはアクセスできず、typeof(MyEnum) にしかアクセスできないと思います。

void foo(Type t)
{
   Object o = Enum.Parse(t, "B");
}
于 2008-10-03T22:42:11.887 に答える
1

ジェネリックでこれを行うことができます。これをラップする Utility クラスを作成しました。

public static class Utils {
    public static T ParseEnum<T>(string value) {
        return (T)Enum.Parse(typeof(T), value, true);
    }

次に、次のように呼び出します。

string s = "B";
MyEnum enumValue = Utils.ParseEnum<MyEnum>(s);
于 2012-12-05T22:16:11.430 に答える