如果我编写以下通用方法:
static bool HelloWorld<TSource>(TSource input)
{
return typeof(TSource).IsPrimitive;
}
并且我将int
传递给它,它成功地将其识别为原语。例如,如果我传递字符串,则不会-这意味着它可以工作。
documentation指出它虽然不应该工作,否则我会错过阅读的东西吗?
如果当前Type表示通用类型,或者泛型类型或泛型方法的定义,此属性总是返回false。
您已经回答了自己的问题...您说:
我将
int
传递给它,它成功地将其识别为原语
如果传递了int
,则TSource
是 int
,并且不是“通用类型”或“类型参数”。
当文档说“类型参数”时,它是指Type
属性为true的IsGenericParameter
对象。
例如,您可以获得这样的IsGenericParameter
对象
Type
注意此处使用非构造类型typeof(List<>).GetGenericArguments()[0] // this will give a Type object that represents a type parameter
,这一点至关重要。
要获取方法的类型参数,您需要获取方法的List<>
,然后调用MethodInfo
。