Нет родинки для NativeMethods.cs? - PullRequest
       44

Нет родинки для NativeMethods.cs?

0 голосов
/ 08 февраля 2012

У меня есть класс с именем NativeMethods.cs, который содержит все методы extern:

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" (крайне маловероятно)?Или особый случай против внешних методов?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2012

«Таким образом, если у метода нет тела (например, абстрактного метода), мы не можем его обойти».- Moles Dev

0 голосов
/ 09 февраля 2012

Кроты способны обходить вызовы управляемого кода.Этот класс явно не имеет дело с управляемым кодом.Попробуйте создать заглушку для этого класса вручную.Это означает создание интерфейса INativeMethods, использование NativeMethods для реализации INativeMethods, а затем использование интерфейса в качестве заглушки, как обычно.Затем кроты будут генерировать SINativeMethods типа заглушки из интерфейса для использования в тестовых проектах.

...