在哪里定义了CopyToNative

本文关键字:CopyToNative 定义 在哪里 | 更新日期: 2023-09-27 17:55:56

我目前正在浏览反编译的C# IL(使用ILSpy),以了解System.Runtime.InteropServices中的某些方法如何(可以)实现。当我想检查Marshal.Copy()是如何实现的时,我发现它只调用 CopyToNative() ,其定义如下:

// System.Runtime.InteropServices.Marshal
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void CopyToNative(object source, int startIndex, IntPtr destination, int length);

在哪里实施?有没有机会看看它的(反编译的)源代码?如果没有,有没有人知道如何实施它?

在哪里定义了CopyToNative

MethodImplAttributeextern 关键字指示此函数是 .NET 运行时本身的内部函数。 几乎可以肯定,此函数在运行时的源代码中以 C 或C++实现。

如果无法访问运行时的源代码,您唯一真正的选择是反汇编此特定函数并检查程序集。 (请注意,这样做可能会违反运行时的 EULA。


您可以考虑查看 Mono 的源代码以了解一种可能的实现。

  • Marshal.Copy()实现
  • copy_to_unmanaged()运行时内部实现