在C#中命名Windows API常量

本文关键字:Windows API 常量 | 更新日期: 2023-09-27 18:29:33

C#中常量的命名约定是Pascal大小写:

private const int TheAnswer = 42;

但有时我们需要从Windows API中表示已经存在的常量。

例如,我不知道如何命名:

/// <summary>
/// With this style turned on for your form, 
/// Windows double-buffers the form and all its child controls.
/// </summary>
public const int WS_EX_COMPOSITED = 0x02000000;

我应该给它取什么名字

保持它为WS_EX_COMPOSITED可以让我快速地将它与WinAPI关联起来,但这是错误的。

一些选项:

  • WsExComposited——太匈牙利化了
  • Composited--太短
  • 包含CompositedWsEx枚举
  • ExtendedWindowsStyles.Composited——类中的常量?枚举

需要注意的是,良好命名的目标是:

  • 它必须可读
  • 它不能触发FxCop和StyleCop,即使这意味着对它们隐藏它

在C#中命名Windows API常量

WS_EX_COMPOSITED对于直接与Win API(或任何其他相关的API)接口的部件来说是非常好的。您想要公开的部分应该遵循标准约定-有单独的公共门面来调用具有良好方法名称的本机函数(您最终会忘记您对特定标志组合的研究,但良好的包装器方法名称至少会让您使用它)。

保持名称尽可能接近本机API的副作用是,您可以直接在MSDN/其他文档中搜索常量,并立即找到答案。如果你重命名它会困难得多。

也许这将帮助新访问者解决这个问题。

如果字段或变量名称要与Win32或COM关联的项的名称匹配,因此需要以下划线开头,请将字段或变量放在一个特殊的NativeMethods类中。NativeMethods类是任何包含以NativeMethod结尾的名称的类,并且用作Win32或COM包装器的占位符。如果项被放置在NativeMethods类中,StyleCop将忽略此冲突。