2009-03-14 8 views
4

文字列を列挙型に変換する簡単なヘルパーメソッドが必要です。次のようなものですが、TがEnum.Parseの最初の引数として好きではありません。エラーはTが型パラメータですが、変数のように使用されます。C#、StringToEnum、これを汎用関数にすることができます

public static T StringToEnum<T>(String value) 
     { 
      return (T) Enum.Parse(T,value,true) ; 
     } 

答えて

7

これを試してください:あなたは何をしていた

public static T StringToEnum<T>(String value) 
{ 
    return (T)Enum.Parse(typeof(T), value, true); 
} 
+0

これは機能するはずです。それを拡張するには:Tを指定するのはintまたはstringを指定するのと同じです。実際のSystem.Typeオブジェクトを返すにはtypeof文が必要です。 – Noldorin

+0

くそ、あなたは早かった;) –

+0

素敵で速い。ありがとう。 – jeff

2
public static T StringToEnum<T>(String value) 
{ 
    return (T) Enum.Parse(typeof(T),value,true) ; 
} 

は、タイプとして 'INT' を使っているようですが、それは、Typeオブジェクトではありません。 Typeオブジェクトを取得するには、typeof(int)を使用します。

0

ここに私が使用するメソッド拡張があります。

/// <summary> 
/// Will parse and string value and return the Enum given. Case is ignored when doing the parse. 
/// </summary> 
/// <param name="typeOfEnum">The type of the Enum to Parse</param> 
/// <param name="value">The string value for the result of the Enum</param> 
/// <param name="errorValue">If an error is encountered this value is returned. (For example could be an Enum)</param> 
/// <returns>Returns Enum Object</returns> 
public static T ToEnum<T>(this string value) 
{ 
    return (T)Enum.Parse(typeof(T), value, true); 
} 
関連する問題