假设您有一个非常好设计的Delphi项目,遵循依赖注入和其他一些良好的实践。
现在假设您需要模拟定义为:
TMyClass = class
public
procedure Method1;
procedure Method2
end;
Method1
和Method2
不是虚方法。在这种情况下,我们需要模拟一个对象,我们需要继承它并且覆盖想要模拟的每个方法,但在这种情况下不可能,因为它们不是virtual
。我应该改变源代码,在每个需要模拟的方法上添加virtual
吗?这不好吧?
编辑:
我在考虑创建一个编译器指令,使类中的所有字段都成为virtual
,这是一个好主意吗?只有我的测试套件会设置编译器指令。
编辑2*:
Embarcadero 应该提供一种简单的方法来更改类的方法指针到另一个方法指针,而不需要virtual
。
virtual
而不是public
。 - Rafael Coluccivirtual
所能实现的,为什么要用某些东西来混淆15年来使用virtual
的经验呢?我相信有一个正则表达式可以将所有非虚拟声明替换为virtual; {temp}
,也有一个正则表达式可以将virtual {temp}
替换回只有;
。 - Johan