C# 为什么可以';我不能获取GetType()的方法体吗?

C# 为什么可以';我不能获取GetType()的方法体吗?,c#,.net,reflection,types,C#,.net,Reflection,Types,假设我有一句话: MethodBody getTypeMethod = typeof(object).GetMethod("GetType").GetMethodBody(); // getTypeMethod is null 为什么getTypeMethodnull?如何获取GetType()方法的MethodBody?您自己已经得到了答案,但只是确认,Object.GetType()是一个外部方法,外部方法没有指定方法体 来自C#规范10.6.7 当方法声明包含外部修饰符时,该方法为 据说

假设我有一句话:

MethodBody getTypeMethod = typeof(object).GetMethod("GetType").GetMethodBody();
// getTypeMethod is null

为什么
getTypeMethod
null?如何获取
GetType()
方法的
MethodBody

您自己已经得到了答案,但只是确认,
Object.GetType()
是一个外部方法,外部方法没有指定方法体

来自C#规范10.6.7

当方法声明包含外部修饰符时,该方法为 据说是一种外在的方法。实现外部方法 在外部,通常使用C#以外的语言。因为 外部方法声明不提供实际实现 外部方法的方法体仅由分号组成


更详细的答案。

您自己得到了答案,但只是确认,
Object.GetType()
是一个外部方法,外部方法没有指定方法体

来自C#规范10.6.7

当方法声明包含外部修饰符时,该方法为 据说是一种外在的方法。实现外部方法 在外部,通常使用C#以外的语言。因为 外部方法声明不提供实际实现 外部方法的方法体仅由分号组成


更详细的回答。

您是否尝试了System.Object以外的其他方法?@StingyJack Yup,尝试了
System.String
System.Int32
,但仍然没有成功。答案似乎是这是对CLR内部的神奇调用(不太奇怪):@EdPlunkett一定是这样。由于
GeType()
extern
,因此它没有方法体,因此
null
值您是否从System.Object以外的其他对象尝试过?@StingyJack Yup,用
System.String
System.Int32
尝试过,但仍然不走运。答案似乎是对CLR内部进行了一次神奇的调用(不太奇怪):@EdPlunkett肯定是它。因为
GeType()
extern
,所以它没有方法体,因此
null