是类NativeMethods在.NET特殊处理?(Is the class NativeMetho

2019-07-18 12:39发布

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

都在这所描述的三类分页.NET Framework中的特殊处理? (NativeMethods,SafeNativeMethods和UnsafeNativeMethods)

我问的原因是我想知道,如果它是正常的创建NativeMethods类的类别。 例如:

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods

Answer 1:

这是一个惯例,并不是必需的。 如果反映到CLR和看看代码在那里,你会经常看到NativeMethods类中的P / Invoke代码。 我相信的FxCop将建议把你的P / Invoke代码在一个类这样如果遇到它。



Answer 2:

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



Answer 3:

你能说出你的类这种方式,但你会继续得到代码分析警告CA1060。 此警告表明你没有关注的惯例。 因此,要防止这种警告,你需要命名具有的P / Invoke方法的类时要遵循的惯例。 如果你想你的分类的P / Invoke方法,你可以使用命名空间。 例如:

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


Answer 4:

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

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



文章来源: Is the class NativeMethods handled specially in .NET?