クラスNativeMethodsは.NETで特別に処理されますか?
-
22-07-2019 - |
質問
https://msdn.microsoft.com /en-us/library/ms182161.aspx
このページに記載されている3つのクラスは、.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によって特別に処理されません。 NativeMethods、SafeNativeMethods、またはUnsafeNativeMethodsという名前のクラス内にP / Invokesを配置することをお勧めします。
アセンブリでFxCopを実行すると、この推奨事項が適用されます。