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
值