C#仕様(17.2)では、属性を指定するときにいくつかの属性ターゲットがあることを示しています。これは、属性を指定するための「実際の」場所があまりないものに属性を適用する必要がある場合によく見られます。たとえば、return
ターゲットはプラットフォームInvokeで頻繁に使用されます。
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SomeWin32Method(); //Assume this is valid, has a DllImport, etc.
ただし、次のような他の属性ターゲットがあることに気付きましたmethod
。
[method: DllImport("somelib.dll")]
static extern bool SomeWin32Method();
どのような状況で、method
属性ターゲットを明示的に定義する必要がありますか(たとえば、あいまいさを解決するため)、それとも完全を期すためにそこにあるだけですか?