C#自定义属性可以指定应用它的方法类型吗?

时间:2013-02-08 11:34:51

标签: c# custom-attributes compile-time

我知道我可以使用[AttributeUsage(AttributeTargets.Method)]来确保自定义属性只能应用于某个方法,但如果将自定义属性应用于带有方法的方法,我可以更进一步并获得编译时错误除了我指定的签名以外的签名?

例如,我是否可以创建一个只能附加到返回int并且只带一个int参数的方法的属性?

3 个答案:

答案 0 :(得分:4)

  

但如果自定义,我可以进一步得到编译时错误   属性应用于具有除I之外的签名的方法   指定?

不,你不能,这根本不受支持。

答案 1 :(得分:1)

你不能这样做,但是你有一个解决方法:.NET Framework支持方法的输入参数和返回值的属性。

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

如果方法有MyAttribute1MyAttribute2MyAttribute3,则检查方法的代码可以执行操作。

根据您的需要,这可能太难看了,但我不知道您的实际要求!

答案 2 :(得分:0)

您可以使用PostSharp在编译期间应用属性。 This link demonstrates Automatically Adding DataContract and DataMember Attributes