NativeMethods类是否在.NET中专门处理?

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

此页面上描述的三个类是否在.NET Framework中专门处理? (NativeMethods,SafeNativeMethods和UnsafeNativeMethods)

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

ComNativeMethods User32NativeMethods OleStorageNativeMethods 

这是一项惯例,而非要求。 如果您反思CLR并查看其中的代码,您将经常在NativeMethods类中看到P / Invoke代码。 我相信如果遇到它,FxCop会建议把你的P / Invoke代码放在这样的类中。

这只是一个惯例,说你应该在名为* NativeMethods的类中放置p / invoke方法,但没有技术限制来阻止你以自己的方式做到这一点……

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

  • MyProject.Com.NativeMethods
  • MyProject.User32.NativeMethods
  • MyProject.OleStorage.NativeMethods

它们不是由CLR专门处理的。 我们建议您将P / Invokes放在名为NativeMethods,SafeNativeMethods或UnsafeNativeMethods的类中。

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