【问题标题】:Add custom compiler warning to virtual method向虚拟方法添加自定义编译器警告
【发布时间】:2017-02-21 10:25:11
【问题描述】:

我正在扩展我们公司的一个库,以便我的同事可以继承我们的业务逻辑类。这将要求他们能够覆盖某些方法。但是,我遇到了类似的问题,例如在覆盖 Equals()GetHashCode() 逻辑时。

当您仅覆盖其中一种方法时,Visual Studio 会发出编译器警告。使用它会非常好,这样如果我的同事忘记覆盖该方法,如果他没有覆盖其他方法,他会收到警告?

是否有可能(可能使用属性等)向 Visual Studio 中的类方法添加自定义编译器警告,即仅覆盖一种方法可能会导致行为不一致?

【问题讨论】:

  • 这是分析仪的工作,例如 Roslyn 分析仪
  • @rakwaht 你链接到一个 Java 问题。没有一个答案与 .NET 相关。例如,.NET 中的 Roslyn 允许您轻松创建分析器。
  • @PanagiotisKanavos 抱歉,我以为是 Java 评论被删除了
  • @PanagiotisKanavos 感谢分析器的想法 - 然而,它看起来像是一种相当复杂的方法。我想没有轻量级的选项可以做到这一点?

标签: c# visual-studio compiler-warnings roslyn


【解决方案1】:

不,没有比这更具体的了。我认为您的选择是:

  1. 按照 Panagiotis Kanavos 的建议编写自定义分析器。该分析器可以特定于您的类型,也可以按照您的建议检测属性的存在。

    我认为生成的分析器不会很复杂,但如果您从未使用过 Roslyn API,学习如何编写它可能需要一些时间。

  2. 找出实现类似目的的不同编码模式。例如,您可以有一种类型,其中两种方法都是abstract(因此您必须同时覆盖两者),另一种类型是sealed(因此您不能覆盖它们)。

    我不确定这种特定方法是否值得,但也许类似的方法值得考虑。

【讨论】:

  • 不完全是我想读的,但我想我将不得不忍受它。只是想估计哪个会更省时……重新实现一半的库或学习 Roslyn。
  • 好吧,这是一个intro to the latter
猜你喜欢
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2018-01-20
相关资源
最近更新 更多