public static T Process<T>(this string key)
where T:bool,string, DateTime
{
var tType = typeof(T);
if(tType == typeof(DateTime))
{
return DateTime.Parse(key.InnerProcess());
}
else if(tType == typeof(bool))
{
return bool.Parse(key.InnerProcess());
}
else if(tType == typeof(string))
{
return key.InnerProcess();
}
}
它说它不能从bool到T或从datetime到T的类型转换。 怎么做到这一点?
innerPrecess()
给了我一个字符串。我想将它解析为给定参数的类型,然后返回它。
答案 0 :(得分:6)
您可以使用Convert.ChangeType
更简单:
public static T Process<T>( string key) where T: IConvertible
{
return (T)Convert.ChangeType(key.InnerProcess(), typeof (T));
}
答案 1 :(得分:5)
编译器不会尝试理解代码来证明您返回的内容 是T
。唯一的方法是不幸地添加一个box / unbox(对于值类型,而不是字符串):
return (T)(object)DateTime.Parse(...etc...);
就个人而言,我建议只使用单独的非泛型方法,除非有充分的理由在这里使用泛型。