我在 Delphi 2009 中有一个自定义的 TObjectList 后代,我想稍微使用一下它的枚举器并向 MoveNext 方法添加一些过滤功能,使其跳过某些对象。 MoveNext 由 DoMoveNext 调用,它是一个虚拟方法,所以这应该不难覆盖……除了一件事。 TObjectList 的 TEnumerator 不是它自己的类;它在 TObjectList 声明中声明为嵌套类型。
是否有任何简单的方法可以在我的后代类中覆盖 TEnumerator.DoMoveNext,或者我是否必须重新实现整个 TEnumerator?这不是一个很大的类(class),但如果可以的话,我宁愿将冗余保持在最低限度......
最佳答案
枚举器是它自己的类。它只有一个嵌套范围。要为其编写后代,只需像往常一样声明一个类,然后在指定新类的祖先时,提供完全限定的类型名称。
type
TMasonEnumerator = class(TObjectList.TEnumerator)
protected
function DoMoveNext: Boolean; override;
end;
关于delphi - 如何覆盖嵌套类型的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366896/