この質問をして申し訳ありませんが、このタスクに対する適切な解決策が見つかりませんでした。
「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
これは依然として をスローします。OverflowException
Int32
int.MaxValue