0

我有一个名为 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”的特殊情况(极不可能)?还是针对外部方法的特例?

4

2 回答 2

0

“因此,如果一个方法没有主体(例如抽象方法),我们就不能绕道而行。” -鼹鼠开发

于 2012-02-09T13:19:15.493 回答
0

Moles 能够绕过对托管代码的调用。这个类显然不处理托管代码。尝试手动为此类创建存根。这意味着创建一个 INativeMethods 接口,让 NativeMethods 实现 INativeMethods,然后像往常一样将该接口用作存根。Moles 然后将从接口生成存根类型 SINativeMethods,用于测试项目。

于 2012-02-09T09:16:28.443 回答