0

すべての extern メソッドを含む NativeMethods.cs という名前のクラスがあります。

internal static class NativeMethods
{
    [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
    [return: MarshalAs(UnmanagedType.Bool)]
    internal static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool wow64Process);

    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
    internal static extern int RegOpenKeyEx(
        IntPtr hKey,
        string subKey,
        int ulOptions,
        int samDesired,
        out int hkResult);
}

このクラスを含むアセンブリには、対応する .Moles ファイルがあります。アセンブリに含まれる他のすべてのクラスは、このクラスを除いて適切に成形およびスタブできます。

MNativeMethods迂回に使えるものはありません。クラス名「NativeMethods」に対する特別なケースはありますか (ほとんどありません)? それとも extern メソッドに対する特別なケースですか?

4

2 に答える 2

0

「したがって、メソッドに本体がない場合 (抽象メソッドなど)、迂回することはできません。」-モグラ開発者

于 2012-02-09T13:19:15.493 に答える
0

Moles は、マネージ コードへの呼び出しを迂回することができます。このクラスは明らかにマネージド コードを扱っていません。このクラスのスタブを手動で作成してみてください。これは、INativeMethods インターフェイスを作成し、NativeMethods に INativeMethods を実装させ、通常どおりインターフェイスをスタブとして使用することを意味します。Moles は、テスト プロジェクトで使用するために、インターフェイスからスタブ タイプの SINativeMethods を生成します。

于 2012-02-09T09:16:28.443 に答える