繁体   English   中英

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

[英]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 "";
}

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

根据您的需求,这也许太丑陋,但是我不知道您的实际要求!

您可以在编译期间使用PostSharp应用属性。 此链接演示了自动添加DataContract和DataMember属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM