【问题标题】:AttributeUsage(AttributeTargets.Property) - Is there a way to specify a black/white-list for Property Type?AttributeUsage(AttributeTargets.Property) - 有没有办法为属性类型指定黑/白名单?
【发布时间】:2011-10-28 19:19:21
【问题描述】:

我有一个自定义属性定义为 System.AttributeUsage(AttributeTargets.Property)。 当开发人员将属性添加到不是类的属性时,我希望编译器抛出编译错误。有什么办法吗?

【问题讨论】:

    标签: .net custom-attributes


    【解决方案1】:

    不,没有类似的东西可用。

    但是,如果您在自己的代码中担心这一点,我建议您编写一些测试来检查所有程序集中所有类型的所有属性,并检查该属性是否已正确应用。

    编译时检查在可行的情况下是最好的,但通过测试进行验证总比没有好:)

    【讨论】:

    • 我正在开发一个其他开发人员将使用的框架,这就是为什么我一直在寻找一个在编译时工作的解决方案。哦,好吧,也许这是 MS 可以添加的东西。
    • @PaulRivera:听起来不太可能 - 有很多东西虽然对 少数 人有用,但会增加 每个人 的复杂性。我建议您包含一个测试程序集,这样他们就可以很容易地自行测试。
    【解决方案2】:

    不要抱太大希望,但您也许可以使用 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-21
      • 2018-07-21
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多