.net – 是否有属性来限制自定义属性可能适用的类型?

我正在编写一个当前具有的属性(它是ValidatorAttribute)

[AttributeUsage(AttributeTargets.Property)]

它限制了可以放置属性的构造的类型.它可以应用于可能存在的任何属性.

我想知道是否有一个属性将限制可以应用该属性的属性的类型.我想限制它在DateTime属性上使用.

我可以看到几个选项,但它们并不理想:

>我可以通过检查属性中的类型来忽略属性的实例,但是没有迹象表明开发人员该属性没有做任何事情
>如果Type不正确,我可以抛出异常,但由于显而易见的原因,这只是一个坏主意.

理想情况下,我会得到一个编译时错误,类似于我将此属性放在除Property之外的任何内容上:

Attribute is not valid on this
declaration type. It is only valid on
‘property, indexer’ declarations.

我不指望有这样的属性,但我很高兴出错.或者,是否有人写过这样的属性(甚至可能?),还是任何建议的替代方案?

最佳答案 强制执行此操作的唯一方法是编写一个构建后工具,枚举程序集中的所有类型,并验证是否将其应用于正确的类型.这样做没有太大意义,如果应用错误,属性根本不会产生任何影响,你只是找不到它.

点赞