列挙型の名前と値の名前で不明な列挙型の値を取得するにはどうすればいいですか? 質問する

列挙型の名前と値の名前で不明な列挙型の値を取得するにはどうすればいいですか? 質問する

この質問をして申し訳ありませんが、このタスクに対する適切な解決策が見つかりませんでした。

「myEnum」という名前のEnumがあります(MyEnumは関数では認識されません)。myEnumの値のint値を取得する必要があります。

例:
プログラマーは列挙型に「myEnum」という名前を付けました。

 public enum myEnum
 {
     foo = 1,
     bar = 2,
 }

私の関数は次のことを行う必要があります: 文字列で「myEnum」の「foo」の値を取得します

関数は次の方法で開く必要があります:

 public int GetValueOf(string EnumName, string EnumConst)
 {

 }

プログラマーAが次のようにしてそれを開くと、

 int a = GetValueOf("myEnum","foo");

1を返すはずです

プログラマーBが「mySpace」というEnumを持っている場合、値5の「bar」を返したいとします。

int a = GetValueOf("mySpace","bar")

5を返す

これどうやってするの?

ベストアンサー1

使用できます列挙型パースこれを実行するには、Enum 型の完全修飾型名が必要になります。つまり、次のようになります"SomeNamespace.myEnum"

public static int GetValueOf(string enumName, string enumConst)
{
    Type enumType = Type.GetType(enumName);
    if (enumType == null)
    {
        throw new ArgumentException("Specified enum type could not be found", "enumName");
    }

    object value = Enum.Parse(enumType, enumConst);
    return Convert.ToInt32(value);
}

また、これはConvert.ToInt32キャストの代わりに を使用することにも注意してください。これは、 ではない基礎型を持つ列挙型値を処理します。ただし、列挙型の基礎値が の範囲外である場合(つまり、値が より大きい ulong の場合)、Int32これは依然として をスローします。OverflowExceptionInt32int.MaxValue

おすすめ記事