是否有可能做這樣的事情:使用類型參數作爲返回類型
public static T ToEnum<T>(this string s, Type T)
{
return (T)Enum.Parse(typeof(T), s);
}
或以其他方式,即,使用參數T作爲返回類型?
是否有可能做這樣的事情:使用類型參數作爲返回類型
public static T ToEnum<T>(this string s, Type T)
{
return (T)Enum.Parse(typeof(T), s);
}
或以其他方式,即,使用參數T作爲返回類型?
你可以做到這一點
public static class Extensions
{
public static T ToEnum<T>(this string s) where T : struct
{
return (T)Enum.Parse(typeof(T), s);
}
}
public enum TestEnum
{
None,
Special,
}
class Program
{
static void Main(string[] args)
{
var x = TestEnum.Special.ToString();
var y = x.ToEnum<TestEnum>(); // y will be TestEnum.Special
}
}
當然,你可以像這樣做:
public static T ToEnum<T>(this string s)
{
return (T)Enum.Parse(typeof(T), s);
}
然後調用它像這樣:
string s = "Red";
Color color = s.ToEnum<Color>();
是的,這是可能的,理由刪除你的方法的第二個參數(這是完全沒用的),它會工作(我測試了代碼)!
不,但你可以證明你打算如何使用它? – user7116
我只是在玩耍,然後想到這一點。這個例子就是一個懶惰的程序員的例子,他只是想要做'.ToEnum(MoodTypes)'作爲一個例子。 – Jake
你不應該需要'typeof()'Type'對象。實際上,您可以直接從泛型參數獲取類型信息,而不需要傳遞任何常規參數。例如,通過調用''Foo「.ToEnum()''你可以在不通過'typeof(SomeEnum)''的情況下獲得'SomeEnum.Foo'。 –
BoltClock