使用Type参数作为返回类型

时间:2011-11-22 08:36:08

标签: c# generics types

是否可以做这样的事情:

public static T ToEnum<T>(this string s, Type T)
{
    return (T)Enum.Parse(typeof(T), s);
}

或者以其他方式,即使用参数T作为返回类型?

3 个答案:

答案 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删除你方法的第二个参数(它完全没用),它会起作用(我测试了代码)!