10

https://msdn.microsoft.com/en-us/library/ms182161.aspx

本页描述的三个类是否在 .NET Framework 中进行了特殊处理?(NativeMethods、SafeNativeMethods 和 UnsafeNativeMethods)

我问的原因是我想知道创建 NativeMethods 类的类别是否可以。例如:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
4

4 回答 4

8

这是约定,不是要求。如果您反映到 CLR 并查看其中的代码,您会经常在 NativeMethods 类中看到 P/Invoke 代码。我相信如果 FxCop 遇到它,它会建议将您的 P/Invoke 代码放在这样的类中。

于 2009-09-18T15:06:34.053 回答
3

这只是一个约定,说您应该将 p/invoke 方法放在名为 *NativeMethods 的类中,但没有技术限制可以阻止您按照自己的方式进行操作......

于 2009-09-18T15:04:51.360 回答
2

您可以这样命名您的类,但您将继续收到代码分析警告 CA1060。此警告表明您没有遵守约定。因此,为防止出现此警告,您需要在命名具有 P/Invoke 方法的类时遵循约定。如果要对 P/Invoke 方法进行分类,可以使用命名空间。例如:

  • MyProject.Com.NativeMethods
  • MyProject.User32.NativeMethods
  • MyProject.OleStorage.NativeMethods
于 2016-02-11T23:06:08.867 回答
1

它们不是由 CLR 专门处理的。将您的 P/Invokes 放在名为 NativeMethods、SafeNativeMethods 或 UnsafeNativeMethods 的类中只是一种简单的推荐做法。

如果您在程序集上运行 FxCop,您将看到此建议发挥作用。

于 2009-09-18T15:04:15.400 回答