繁体   English   中英

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

[英]c#: how to convert string to custom template type (i.e. implement “T convertTo<T>(string)”)

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

T convertTo<T>(string stringToConvert)

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

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

那我该如何实现我的功能呢?

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

最后我用这种方式实现了函数:

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));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM