我正在编写一种方法来进行智能类型转换 - 如果类型参数恰好是字符串,则使用 ToString() ,否则进行转换,但如果转换不起作用则返回 null 。v
基本上可以在不引发异常的情况下从中获取尽可能多的信息。
在我尝试演员之前,我检查了这T
确实是一个string
,但编译器仍然不是粉丝:
Cannot convert type 'string' to 'T'
这是我的方法:
public T? Convert<T>(object v)
{
if (typeof(T) == typeof(string)) {
return (T)v.ToString(); // Cannot convert type 'string' to 'T'
} else try {
return (T)v;
} catch (InvalidCastException) {
return null;
}
}
也让我知道这是否是某种不可饶恕的罪过。我正在使用它来处理一些可能具有混合类型的数据结构。