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

本文关键字:应用 方法 类型 自定义属性 是否 | 更新日期: 2023-09-27 17:58:14

我知道我可以使用[AttributeUsage(AttributeTargets.Method)]来确保自定义属性只能应用于方法,但如果自定义属性应用于签名不是我指定的方法,我是否可以更进一步,并得到编译时错误?

例如,我可以创建一个只能附加到返回int并接受单个int参数的方法的属性吗?

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

但是如果自定义属性应用于签名不是I的方法具体说明

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

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

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

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

根据你的需要,也许这太难看了,但我不知道你的实际要求!

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