DllImportはクラスの中で

「クラスの外」に[DllImport(・・・)]を書くことはできません。

理由:C#ではメソッドやフィールドは必ずクラス・構造体・インターフェイスの中に定義しなけれはならないからです。

C#の構文上、こういうコードはコンパイルエラーになります:

正しい形:必ずクラスの中で定義する

補足「クラスの中」であればどこでも良いの?
はい、静的メソッドであればstatic class の中にまとめるのが一般的です。以下のような「ネイティブ関数呼び出し専用クラス」を作っておくのが、可読性と保守性の面でおすすめです。

例:

まとめ

項目結論
[D1Import(…….)]をクラスの外に書ける?書けません(構文エラー)
どこに書くべき?クラス、通常は static class の中
複数あるときは?NativeMethods や InteropHelper などのクラスにまとめると良い

コメント

タイトルとURLをコピーしました