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,您会看到此建议发挥作用。