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

MethodImplAttributeandキーワードは、このextern関数が.NETランタイム自体の内部にあることを示します。この関数は、ほぼ確実に、ランタイムのソースコードのCまたはC++で実装されます。

ランタイムのソースコードにアクセスできない場合、唯一の現実的なオプションは、この特定の関数を逆アセンブルしてアセンブリを調べることです。(これを行うと、ランタイムのEULAに違反する可能性があることに注意してください。)


考えられる1つの実装を確認するために、 Monoのソースコードを確認することを検討してください。

于 2013-01-25T16:55:20.077 に答える