3

我目前正在浏览反编译的 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);

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

4

1 回答 1

6

MethodImplAttributeandextern关键字表示此函数是 .NET 运行时本身的内部函数。这个函数几乎肯定是在运行时的源代码中用 C 或 C++ 实现的。

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


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

于 2013-01-25T16:55:20.077 回答