文字列を列挙型に変換する簡単なヘルパーメソッドが必要です。次のようなものですが、TがEnum.Parseの最初の引数として好きではありません。エラーはTが型パラメータですが、変数のように使用されます。C#、StringToEnum、これを汎用関数にすることができます
public static T StringToEnum<T>(String value)
{
return (T) Enum.Parse(T,value,true) ;
}
文字列を列挙型に変換する簡単なヘルパーメソッドが必要です。次のようなものですが、TがEnum.Parseの最初の引数として好きではありません。エラーはTが型パラメータですが、変数のように使用されます。C#、StringToEnum、これを汎用関数にすることができます
public static T StringToEnum<T>(String value)
{
return (T) Enum.Parse(T,value,true) ;
}
これを試してください:あなたは何をしていた
public static T StringToEnum<T>(String value)
{
return (T)Enum.Parse(typeof(T), value, true);
}
public static T StringToEnum<T>(String value)
{
return (T) Enum.Parse(typeof(T),value,true) ;
}
は、タイプとして 'INT' を使っているようですが、それは、Typeオブジェクトではありません。 Typeオブジェクトを取得するには、typeof(int)を使用します。
ここに私が使用するメソッド拡張があります。
/// <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);
}
これは機能するはずです。それを拡張するには:Tを指定するのはintまたはstringを指定するのと同じです。実際のSystem.Typeオブジェクトを返すにはtypeof文が必要です。 – Noldorin
くそ、あなたは早かった;) –
素敵で速い。ありがとう。 – jeff