1

カスタム属性をメソッドにのみ適用できることを確認するために使用できることはわかってい[AttributeUsage(AttributeTargets.Method)]ますが、さらに進んで、指定した以外のシグネチャを持つメソッドにカスタム属性が適用された場合、コンパイル時にエラーが発生することはありますか?

intたとえば、1 つのintパラメーターを返し、受け取るメソッドにのみアタッチできる属性を作成できますか?

4

3 に答える 3

4

カスタム属性が指定したものとは異なるシグネチャを持つメソッドに適用された場合、さらに進んでコンパイル時エラーを取得できますか?

いいえ、できません。これは単にサポートされていません。

于 2013-02-08T11:37:06.290 に答える
1

それはできませんが、回避策があります。.NET Framework は、メソッドの入力パラメーターと戻り値の属性をサポートしています。

[MyAttribute1]
[return: MyAttribute2]
public int Method([MyAttribute3] int some)
{
    return "";
}

また、メソッドを検査するコードは、メソッドにMyAttribute1MyAttribute2およびが含まれている場合に実行できますMyAttribute3

ニーズによっては、これは醜すぎるかもしれませんが、実際の要件はわかりません!

于 2013-02-08T11:48:19.223 に答える
0

PostSharp を使用して、コンパイル中に属性を適用できます。このリンクは、DataContract および DataMember 属性を自動的に追加する方法を示しています

于 2013-02-08T11:57:07.053 に答える