我想要一个可以将“string”转换为给定类型T的函数。 即我想实现这样的功能:
T convertTo<T>(string stringToConvert)
T实际上可能是简单类型或枚举,但我不知道如何在运行时检查实际的T类型。即我不能写那样的东西:
if (T instanceof MyEnum) { return MyEnum.Parse(stringToConvert); }
我如何实现我的功能呢?
答案 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));
}