我正在扩展我们的一家公司图书馆,以便我的同事可以继承我们的一类业务逻辑。这将要求他们能够覆盖某些方法。但是,当遇到覆盖Equals()
和GetHashCode()
逻辑时,我遇到了类似的问题。
当您只是覆盖其中一个方法时,Visual Studio会发出编译器警告。使用它是非常好的,这样如果我的同事忘记覆盖该方法,如果不覆盖其他方法,他会收到警告吗?
是否有可能(可能使用属性等)向Visual Studio中的类方法添加自定义编译器警告,只覆盖一个方法可能会导致行为不一致?
答案 0 :(得分:1)
不,没有具体的内容。我认为你的选择是:
按照Panagiotis Kanavos的建议编写自定义分析仪。该分析器可以特定于您的类型,也可以检测属性的存在,如您所建议的那样。
我认为生成的分析器不会非常复杂,但如果您从未使用过Roslyn API,那么学习如何编写它可能需要一些时间。
找出实现类似目的的不同编码模式。例如,您可以使用一种类型,其中两种方法都是abstract
(因此您必须覆盖它们)和一种sealed
(因此您无法覆盖它们)。
我不确定这种具体方法是否值得,但也许类似的东西值得考虑。