読者です 読者をやめる 読者になる 読者になる

【C#】enumで宣言されているメンバーを文字列から特定し取得する

つらつら語っても仕方ないのでコードを出しましょう。

public static TEnum GetEnum<TEnum>(string target)
{
    if (string.IsNullOrEmpty(target)) throw new ArgumentException("Target is null.");

    var type = typeof(TEnum);

    if (!type.IsEnum) throw new NotSupportedException(string.Format("{0} is not enum.", type.Name));

    var members = Enum.GetNames(type);

    if (!members.Contains(target)) throw new ArgumentException("Target Name Not Found.");

    return (TEnum)Enum.Parse(type, members.Where(x => x == target).First(), true);
}

型情報をパラメータとして渡すならやっぱジェネリックでしょう、と言うことで。

参考:C# で enum を扱うメソッドってどう書くべきなのだろう - 捨てられたブログ