我在Delphi 2009中有一个自定义的TObjectList后代,我想稍微使用它的枚举器并为MoveNext方法添加一些过滤功能,以使其跳过某些对象。 MoveNext是由DoMoveNext调用的,这是一个虚方法,所以这不应该难以覆盖......除了一件事。 TObjectList的TEnumerator不是它自己的类;它在TObjectList声明中声明为嵌套类型。
有没有简单的方法来覆盖我的后代类中的TEnumerator.DoMoveNext,还是我必须重新实现整个TEnumerator?这不是一个很大的课程,但如果可以的话,我宁愿将冗余保持在最低限度......
答案 0 :(得分:8)
枚举器是自己的类。它只有一个嵌套的范围。要为它编写后代,只需像往常一样声明一个类,并在指定新类的祖先时,给出完全限定的类型名称。
type
TMasonEnumerator = class(TObjectList.TEnumerator)
protected
function DoMoveNext: Boolean; override;
end;
答案 1 :(得分:0)
Excelent topics关于调查员。