例如
Type t = typeof(T);
t.GetProperty("Company")
因为T
不是Type
对象,它只是一个类型参数。
在编译时,类型参数将被实际类型替换。例如,对于为该string
类型生成的代码,typeof(T)
实际上将是typeof(string)
. 这里string
不是一个Type
对象,它只是一个数据类型。您需要typeof
获取该Type
数据类型的对象。
因为类型和描述类型的对象之间存在差异。
T
是一种类型。typeof
应用于一个类型,并返回一个 type 的对象Type
,它描述了所讨论的类型。
另一种解释差异的尝试:
有编译时类型,string
例如int
或MyClass
。您在编写代码时声明了它们。
有运行时类型。它们保存在 type 的对象中Type
。这些是运行时内存中存在的普通对象实例。你可以通过 typeof( MyType
) 得到这样的对象。这些类型对象可用于在运行时检查类型。