【发布时间】:2011-10-28 19:19:21
【问题描述】:
我有一个自定义属性定义为 System.AttributeUsage(AttributeTargets.Property)。 当开发人员将属性添加到不是类的属性时,我希望编译器抛出编译错误。有什么办法吗?
【问题讨论】:
我有一个自定义属性定义为 System.AttributeUsage(AttributeTargets.Property)。 当开发人员将属性添加到不是类的属性时,我希望编译器抛出编译错误。有什么办法吗?
【问题讨论】:
不,没有类似的东西可用。
但是,如果您在自己的代码中担心这一点,我建议您编写一些测试来检查所有程序集中所有类型的所有属性,并检查该属性是否已正确应用。
编译时检查在可行的情况下是最好的,但通过测试进行验证总比没有好:)
【讨论】:
不要抱太大希望,但您也许可以使用 Microsoft 的代码合同或 FxCop 之类的东西强制自定义编译器错误:
代码合同:
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx
FxCop:
http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx
您还可以查看 Spec#:
http://research.microsoft.com/en-us/projects/specsharp/
【讨论】: