gpt4 book ai didi

delphi - 如何模拟没有虚拟方法的类?

转载 作者:行者123 更新时间:2023-12-03 14:45:09 24 4
gpt4 key购买 nike

假设您有一个设计良好的 Delphi 项目,它遵循依赖项注入(inject)和其他一些良好实践。

现在假设您需要模拟一个定义为的类:

TMyClass = class
public
procedure Method1;
procedure Method2
end;

Method1Method2 不是虚拟的。在这种情况下你会做什么?要模拟一个对象,我们需要继承它并覆盖您想要模拟的每个方法,但在这种情况下这是不可能的,因为它们不是虚拟。我是否应该更改源代码以在我需要模拟的每个方法上添加virtual?是不是很糟糕?

编辑

我正在考虑创建一个编译器指令来使类中的所有字段都成为虚拟,这是一个好主意吗?只有我的测试套件会设置编译器指令。

编辑2*

Embarcadero 应该提供一种简单的方法将类的方法指针更改为另一个方法点,而不需要虚拟

最佳答案

将方法设为虚拟,以便您可以模拟它们。 (它们不需要是抽象的。)

如果您无法做到这一点,请用另一个类包装该类。使包装器的方法成为虚拟的,并且在默认实现中,只需将调用转发到原始类。无论您的程序在何处使用原始类,都将其替换为包装器。现在,模拟包装器。

关于delphi - 如何模拟没有虚拟方法的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com