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

时间:2009-09-18 15:01:44

标签: c# .net pinvoke native-methods

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

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

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

ComNativeMethods
User32NativeMethods
OleStorageNativeMethods

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

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