【问题标题】:How to generate a compiler error based on an attribute being missing in C#?如何根据 C# 中缺少的属性生成编译器错误?
【发布时间】:2011-02-16 04:40:44
【问题描述】:

我为 Revit Structure API 创建了许多加载项。每个工具都必须有一个实现接口 IExternalCommand 的类。

在最新版本的 Revit 中,要使您的工具正常工作,您需要在实现该接口的类上具有两个属性:

[再生(RegenerationOption.Manual)] [交易(TransactionMode.Automatic)]

括号中的值可以改变,但一定有一些东西。我经常发现自己忘记设置属性,然后在运行时崩溃。 Visual Studio 2010 中是否有任何方法可以添加编译器警告或错误,说明如果您的类实现了该接口,则它必须具有这两个属性?如果有帮助,我会重新整理。

谁能指出我正确的方向?

【问题讨论】:

标签: c# compiler-construction revit-api


【解决方案1】:

很遗憾没有。 (不过,我不知道 Resharper)

如果您有 VS2010 Ultimate,您可以编写自定义代码分析规则。

【讨论】:

    【解决方案2】:

    不是在编译期间,但我认为使用反射很容易。

    我建议一个单独的程序使用反射来检查你编译的程序集,找到所有具有指定接口的类,然后检查这些类的属性,很快返回一个友好的错误消息。

    您仍然需要在编译程序后运行该程序,但根据您的 IDE,您可以将其设置为构建后步骤。

    【讨论】:

      猜你喜欢
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 2013-01-10
      相关资源
      最近更新 更多