需要公开WinAPI枚举时要遵循的做法是什么?

时间:2015-06-27 15:26:13

标签: c# .net vb.net enums pinvoke

我想知道在需要公开WinAPI枚举时要遵循哪种正确的做法。

(我认为这个问题同时影响C#和VB.Net,因为它只是一个成员可见性问题)

我有一个NativeMethods类,表示 MSDN ,以便在P / Invoking时遵循最佳做法,好吧,在NativeMethods我已宣布SetSystemCursor功能来自Windows API,以及id函数的SetSystemCursor参数所需的枚举

https://msdn.microsoft.com/en-us/library/windows/desktop/ms648395%28v=vs.85%29.aspx

然后,我做了一个小包装:

Public Shared Function SetSystemCursor(ByVal filePath As String,
                                       ByVal cursorType As NativeMethods.SystemCursorId) As Boolean

    Return NativeMethods.SetSystemCursor(NativeMethods.LoadCursorFromFile(filePath), cursorType)

End Function

请注意cursorType参数,问题是SystemCursorId 枚举不公开,因为正如我所说的是调用NativeMethods内定义的平台的一部分class,所以,为了能够使用包装器,我可以做两件事,首先公开SystemCursorId Enum ...这意味着将 Enum 移到私人NativeMethods这样的类:

Public Class MyClass

    Private Class NativeMethods

    ' ...

    End Class

    Public Enum SystemCursorId

        Arrow = 32512

        Crosshair = 32515

    End Enum

End Class

或者其次,在NativeMethods类之外重新声明相同的 Enum 以公开它,如下所示:

Public Class MyClass

    Private Class NativeMethods

        Friend Enum SystemCursorId

            Arrow = 32512

            Crosshair = 32515

        End Enum

    End Class

    Public Enum SystemCursorId

        Arrow = NativeMethods.SystemCursorId.Arrow

        Crosshair = NativeMethods.SystemCursorId.Crosshair

    End Enum

End Class

那么,在这种情况下,这是推荐的编程实践?

0 个答案:

没有答案