请考虑以下事项:
private T getValue<T>(String attr)
{ ... }
如何查看Type是什么?
我在考虑:
if("" is T) // String
if(1 is T) // Int32
有更好的方法吗?
答案 0 :(得分:18)
功能typeof(T)
?
答案 1 :(得分:5)
您可以使用功能typeof(T)
?
所以要检查字符串,请执行
if(typeof(T) == typeof(string))
//做点什么
答案 2 :(得分:5)
如果需要获取泛型类型参数的类型,这几乎肯定是函数设计中的一个缺陷;这是“通用”的相反。因此,请使用重载。
除此之外,Unsliced已经给出了确定T
类型的正确答案。
答案 3 :(得分:2)
实际上有两种方法可以做到这一点,如果期望的类派生自相同的类或接口或抽象类,您可以在通用签名中轻松完成
T GetValue()其中T:class,这将强制整个T类型为引用类型。 要么 T GetValue()其中T:IDisposable,这将强制整个T类型实现IDisposable。
对于你的情况typeof(T)将解决你的问题,但在这种情况下,使方法不通用。