是否有可能做这样的事情:使用类型参数作为返回类型
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