如何在.NET中实现object.GetType()
?
答案 0 :(得分:6)
它在运行时本身实现,因此没有C#源代码。
[MethodImpl(MethodImplOptions.InternalCall)]
public extern Type GetType();
MethodImplOptions.InternalCall
用于在运行时本身内具有“神奇”实现的函数。
对于正常的.net实现,自关闭源代码以来,您根本找不到它。使用Rotor或Mono,您很可能会在他们的c / c ++运行时源代码中找到它。
我假设它只是使用每个实例开头的标记指针来获取类信息,然后包含一个字段以进入托管Type
实例,可能会按需创建它。
答案 1 :(得分:1)
我怀疑这是作为引擎本身的一部分实现的,所以完全有可能这个“源代码”是c ++而不是发布(除了单声道等)。
无论哪种方式:我想不出你需要这个的场景......如果你想知道类型元数据如何与对象相关联,请查看CLI规范 - ECMA335