2

文字列を特定のように解析することを知っていますenum

enum AnEnumType 
{
   TEST_,
   OTHER_TEST_,
   OTHERS_
}

enum OtherEnumType 
{
   TEST1_,
   OTHER_TEST1_,
   OTHERS1_
}


string aValueString = "TEST_";

AnEnumType result = (AnEnumType)Enum.Parse(typeof(AnEnumType), aValueString);

だから、私は私のようなパーサーを使用する一般的な関数を作成したいと思いますenum:

public Type ConvertStringToAnEnum(string value, Type anyType){

return (anyType)Enum.Parse(typeof(anyType), aValueString);
}

でも、それはもったいないと思います…

関数の引数として指定された列挙型を解析する関数を作成するには?

呼びたいようにOtherEnumType result = ConvertStringToAnEnum("TEST1_", OtherEnumType)

4

3 に答える 3

6

ジェネリック メソッドをジェネリックにします。

public T ConvertStringToAnEnum<T>(string value){
  return (T)Enum.Parse(typeof(T), value);
}

使用法:

OtherEnumType result = ConvertStringToAnEnum<OtherEnumType>("TEST1_");
于 2012-06-11T12:35:10.130 に答える
2

あなたは使用しようとすることができます

public T ConvertStringToAnEnum<T>(string value)
{
    return (T)Enum.Parse(typeof(T), value);
}

これでできること
OtherEnumType tp2 = ConvertStringToAnEnum<OtherEnumType>("TEST1_");

または拡張メソッドを使用する

public static class Extensions
{
    public static T ToEnum<T>(this string value)
    {
        return (T)Enum.Parse(typeof(T), value);
    }
}

これでできること

OtherEnumType tp2 = "TEST1_".ToEnum<OtherEnumType>();
于 2012-06-11T12:35:39.823 に答える
0

取得したい関与の程度に応じて、属性を使用して列挙値にわかりやすい名前を付けることもできます。文字列をC#の列挙型に関連付けると、これを行う方法についてかなり良いイントロが得られます。

于 2012-06-11T12:42:11.113 に答える