我目前正在浏览反编译的 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()
implementations copy_to_unmanaged()
runtime-internal implementation 关于c# - CopyToNative 在哪里定义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14526533/