我知道我可以使用[AttributeUsage(AttributeTargets.Method)]
来确保自定义属性只能应用于某个方法,但如果将自定义属性应用于带有方法的方法,我可以更进一步并获得编译时错误除了我指定的签名以外的签名?
例如,我是否可以创建一个只能附加到返回int
并且只带一个int
参数的方法的属性?
答案 0 :(得分:4)
但如果自定义,我可以进一步得到编译时错误 属性应用于具有除I之外的签名的方法 指定?
不,你不能,这根本不受支持。
答案 1 :(得分:1)
你不能这样做,但是你有一个解决方法:.NET Framework支持方法的输入参数和返回值的属性。
[MyAttribute1]
[return: MyAttribute2]
public int Method([MyAttribute3] int some)
{
return "";
}
如果方法有MyAttribute1
,MyAttribute2
和MyAttribute3
,则检查方法的代码可以执行操作。
根据您的需要,这可能太难看了,但我不知道您的实际要求!
答案 2 :(得分:0)
您可以使用PostSharp在编译期间应用属性。 This link demonstrates Automatically Adding DataContract and DataMember Attributes