Type和TypeInfo之间有什么区别或关系?

37

我无法完全理解何时使用其中之一。它们非常相似,以至于我每时每刻都感到困惑。关于反射方面,我不知道是否应该使用普通的Type还是TypeInfo。

.NET Framework本身增加了更多混淆因素,例如assembly.DefinedTypes。它检索一个IEnumerable<TypeInfo>,而我原本认为它应该是IEnumerable<Type>。此外,还有一个typeInfo.AsType()方法。那是什么意思?它们是否可以互换?

此外,它们还有非常相似的方法。

看起来TypeInfo是经典Type的更强大的版本。我错了吗?

1个回答

32
根据MSDN文档: TypeInfo对象代表类型定义本身,而Type对象表示对类型定义的引用。获取TypeInfo对象会强制加载包含该类型的程序集。相比之下,您可以操作Type对象而不一定需要运行时加载它们引用的程序集。 因此,Type提供了一个更浅的对象数据表示,即提供类型名称作为字符串。 而TypeInfo提供了类型的更丰富的表示,包括成员列表、实现接口和基类型。 有关详细信息,请参见此处的说明。

3
请注意,根据 https://blogs.msdn.microsoft.com/dotnet/2016/05/27/making-it-easier-to-port-to-net-core/ 和 http://www.lifehacker.com.au/2016/05/microsoft-reconsiders-reflection-serialisation-changes-for-net-core/ 的说法,这是针对 .Net Core 进行的,但是微软最终已经将其撤回。 - yoel halb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接