NativeMethods 类是否在 .NET 中进行了特殊处理?
-
22-07-2019 - |
题
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。
不隶属于 StackOverflow