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

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

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

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
有帮助吗?

解决方案

这是一个约定,而不是要求。如果反映到CLR和看看代码在那里,你会经常看到NativeMethods类中的P / Invoke代码。我相信的FxCop将建议把你的P /在一个类中调用代码,这样如果遇到它。

其他提示

这只是说你应该把的P / Invoke在名为类的方法* NativeMethods公约,但没有技术的限制,以防止你做你自己的路......

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

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

它们不是由CLR特殊处理的。它只是推荐的做法,对你的P / A类中调用名为NativeMethods,SafeNativeMethods,或UnsafeNativeMethods。

您会看到这一建议开始发挥作用,如果你对你的组件运行的FxCop。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top