Object.GetType()源代码

时间:2011-02-20 11:41:03

标签: .net

如何在.NET中实现object.GetType()

2 个答案:

答案 0 :(得分:6)

它在运行时本身实现,因此没有C#源代码。

[MethodImpl(MethodImplOptions.InternalCall)]
public extern Type GetType();

MethodImplOptions.InternalCall用于在运行时本身内具有“神奇”实现的函数。

对于正常的.net实现,自关闭源代码以来,您根本找不到它。使用Rotor或Mono,您很可能会在他们的c / c ++运行时源代码中找到它。

我假设它只是使用每个实例开头的标记指针来获取类信息,然后包含一个字段以进入托管Type实例,可能会按需创建它。

答案 1 :(得分:1)

我怀疑这是作为引擎本身的一部分实现的,所以完全有可能这个“源代码”是c ++而不是发布(除了单声道等)。

无论哪种方式:我想不出你需要这个的场景......如果你想知道类型元数据如何与对象相关联,请查看CLI规范 - ECMA335