代码之家  ›  专栏  ›  技术社区  ›  adrianbanks

是否可以将标记为MethodImplOptions.InternalCall的方法链接到其实现?

  •  4
  • adrianbanks  · 技术社区  · 15 年前

    在试图找出异常的可能原因时,我使用Reflector遵循代码路径。我已经做得越来越深入了,但最终得到的方法调用如下:

    [MethodImpl(MethodImplOptions.InternalCall)]
    private extern void SomeMethod(int someParameter);
    

    方法上的标记告诉框架在某个地方调用C++函数。是否有任何方法可以找出实际调用的方法,以及可能调用的其他方法?

    注意:我真的不想看到这个方法的源代码,我只想知道可能会抛出这个方法调用中产生的异常的事情。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    内部调用最终调用CLR中的C++函数。你可以在 Rotor source code . 查看clr\src\vm\ecall.cpp以查找从.NET可见名称到clr函数名称的映射。当心消息来源已经过时了。

        2
  •  0
  •   Mel Harbour    15 年前

    如果要跟踪哪些方法可以引发给定类型的异常,可以使用 http://www.red-gate.com/products/Exception_Hunter/index.htm