在哪里定义了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);
在哪里实施?有没有机会看看它的(反编译的)源代码?如果没有,有没有人知道如何实施它?
MethodImplAttribute
和 extern
关键字指示此函数是 .NET 运行时本身的内部函数。 几乎可以肯定,此函数在运行时的源代码中以 C 或C++实现。
如果无法访问运行时的源代码,您唯一真正的选择是反汇编此特定函数并检查程序集。 (请注意,这样做可能会违反运行时的 EULA。
您可以考虑查看 Mono 的源代码以了解一种可能的实现。
-
Marshal.Copy()
实现 -
copy_to_unmanaged()
运行时内部实现