是否可以做这样的事情:
public static T ToEnum<T>(this string s, Type T)
{
return (T)Enum.Parse(typeof(T), s);
}
或者以其他方式,即使用参数T作为返回类型?
答案 0 :(得分:4)
你可以这样做
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
}
}
答案 1 :(得分:1)
当然,你可以这样做:
public static T ToEnum<T>(this string s)
{
return (T)Enum.Parse(typeof(T), s);
}
然后你这样称呼它:
string s = "Red";
Color color = s.ToEnum<Color>();
答案 2 :(得分:1)
是的,有可能,juste删除你方法的第二个参数(它完全没用),它会起作用(我测试了代码)!