C# 类NativeMethods是在.NET中专门处理的吗?
本页中描述的三个类是否在.NET Framework中专门处理?(国家方法、安全方法和非预防性方法) 我问的原因是我想知道是否可以创建NativeMethods类的类别。例如:C# 类NativeMethods是在.NET中专门处理的吗?,c#,.net,pinvoke,native-methods,C#,.net,Pinvoke,Native Methods,本页中描述的三个类是否在.NET Framework中专门处理?(国家方法、安全方法和非预防性方法) 我问的原因是我想知道是否可以创建NativeMethods类的类别。例如: ComNativeMethods User32NativeMethods OleStorageNativeMethods CLR不专门处理这些问题。建议在名为NativeMethods、SafeNativeMethods或UnsafentiveMethods的类中调用P/Invokes 如果您在程序集上运行FxCop,
ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
CLR不专门处理这些问题。建议在名为NativeMethods、SafeNativeMethods或UnsafentiveMethods的类中调用P/Invokes
如果您在程序集上运行FxCop,您将看到此建议发挥作用。这只是一个约定,要求您应该将p/invoke方法放置在名为*NativeMethods的类中,但没有技术约束来阻止您以自己的方式执行…这是约定,不是要求。如果您反映到CLR中并查看其中的代码,您通常会在NativeMethods类中看到P/Invoke代码。我相信FxCop会建议在遇到P/Invoke代码时将其放入这样的类中。
您可以这样命名您的类,但您将继续得到代码分析警告CA1060。此警告表示您没有遵守约定。因此,为了防止出现此警告,在命名具有P/Invoke方法的类时,需要遵循约定。如果要对P/Invoke方法进行分类,可以使用名称空间。例如:
ComNativeMethods
User32NativeMethods
OleStorageNativeMethods
- MyProject.Com.NativeMethods
- MyProject.User32.NativeMethods
- MyProject.OleStorage.NativeMethods