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

C#custom属性是否可以指定应用它的方法的类型?,c#,custom-attributes,compile-time,C#,Custom Attributes,Compile Time,我知道我可以使用[AttributeUsage(AttributeTargets.Method)]来确保自定义属性只能应用于一个方法,但是如果自定义属性应用于一个签名不是我指定的签名的方法,我是否可以进一步得到编译时错误 例如,我可以创建一个只能附加到返回int并接受单个int参数的方法的属性吗 但是,如果自定义 属性应用于签名不是I的方法 具体说明 不,你不能,这根本不受支持 但是,如果自定义 属性应用于签名不是I的方法 具体说明 不,您不能,这根本不受支持。您不能这样做,但您有一个解决方法:

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

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

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

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

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


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

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

[MyAttribute1]
[return: MyAttribute2]
public int Method([MyAttribute3] int some)
{
    return "";
}
如果方法具有
MyAttribute1
MyAttribute2
MyAttribute3
,则检查方法的代码可以执行操作


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

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

[MyAttribute1]
[return: MyAttribute2]
public int Method([MyAttribute3] int some)
{
    return "";
}
如果方法具有
MyAttribute1
MyAttribute2
MyAttribute3
,则检查方法的代码可以执行操作


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

您可以在编译期间使用PostSharp应用属性

您可以在编译期间使用PostSharp应用属性

如果你有固定的签名,也许考虑一个接口而不是一个属性?@ McCravell谢谢你的建议。我实际上有一小部分可能的签名。它可能仍然有效,但是我必须创建几个接口。如果你有固定的签名,也许考虑一个接口而不是一个属性?@ McCravell感谢这个建议。我实际上有一小部分可能的签名。它可能仍然有效,但我必须创建几个接口。