【问题标题】:No mole class for NativeMethods.cs?NativeMethods.cs 没有痣类?
【发布时间】:2012-02-08 06:51:03
【问题描述】:

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

【问题讨论】:

    标签: mstest moles pex-and-moles


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-05
        • 1970-01-01
        • 2011-10-02
        • 2021-09-19
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多