c#:如何将字符串转换为自定义模板类型(即实现“T convertTo <t>(string)”)</t>

时间:2011-04-02 20:50:29

标签: c#

我想要一个可以将“string”转换为给定类型T的函数。 即我想实现这样的功能:

T convertTo<T>(string stringToConvert)

T实际上可能是简单类型或枚举,但我不知道如何在运行时检查实际的T类型。即我不能写那样的东西:

if (T instanceof MyEnum) { return MyEnum.Parse(stringToConvert); }

我如何实现我的功能呢?

3 个答案:

答案 0 :(得分:1)

return (T)Enum.Parse(typeof(T), stringToConvert);

答案 1 :(得分:1)

if (typeof(T) == typeof(MyEnum))
    return (T)Enum.Parse(typeof(T), stringToConvert);

答案 2 :(得分:0)

最后我以这种方式实现了功能:

private static T ConvertFromString<T>(string text)
    {
        if (typeof(Enum).IsAssignableFrom(typeof(T)))
        {
            try
            {
                return (T)Enum.Parse(typeof(T), text);
            }
            catch (ArgumentException e)
            {
                return default(T);
            }
        }
        return (T)Convert.ChangeType(text, typeof(T));
    }