1

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

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

4

3 回答 3

4

但是,如果将自定义属性应用于签名不是我指定的签名的方法,我可以更进一步并获得编译时错误吗?

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

于 2013-02-08T11:37:06.290 回答
1

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

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

如果方法具有MyAttribute1,MyAttribute2和,则检查方法的代码可以执行操作MyAttribute3

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

于 2013-02-08T11:48:19.223 回答
0

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

于 2013-02-08T11:57:07.053 回答