![](/img/trans.png)
[英]In C#, can an attribute be applied to a static class, method or property?
[英]Can a C# custom attribute specify the type of method it is applied to?
我知道我可以使用[AttributeUsage(AttributeTargets.Method)]
来确保只能将自定义属性应用于方法,但是如果将自定义属性应用于具有以下属性的方法,我可以走得更远并出现编译时错误:我指定的签名以外的签名?
例如,是否可以创建只能附加到返回int
并接受单个int
参数的方法的属性?
但是,如果将自定义属性应用于具有我指定的签名以外的其他方法的方法,我可以走得更远并且出现编译时错误吗?
不,您不能,这根本不受支持。
您不能这样做,但是有一种解决方法:.NET Framework支持方法的输入参数和返回值的属性。
[MyAttribute1]
[return: MyAttribute2]
public int Method([MyAttribute3] int some)
{
return "";
}
如果该方法具有MyAttribute1
, MyAttribute2
和MyAttribute3
,则检查该方法的代码可以执行操作。
根据您的需求,这也许太丑陋,但是我不知道您的实际要求!
您可以在编译期间使用PostSharp应用属性。 此链接演示了自动添加DataContract和DataMember属性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.