Estoy anulando un método virtual, y quiero llamar al heredado. Pero no quiero llamar al antecesor inmediato , quiero llamar al antes de.Delphi: ¿Cómo llamar antecesor heredado heredado en un método virtual?
TObject
TDatabaseObject
TADODatabaseObject <---call this guy
TCustomer <---skip this guy
TVIP <---from this guy
He intentado fundición mi self
como el antepasado, y llame al método de eso, sino que dio lugar a desbordamiento de pila recursiva:
procedure TVip.SetProperties(doc: IXMLDOMDocument);
begin
TADODatabaseObject(Self).SetProperties(doc); //skip over TCustomer ancestor
...
end;
He intentado añadir la palabra clave inherited
, pero eso no lo hace compilar:
procedure TVip.SetProperties(doc: IXMLDOMDocument);
begin
inherited TADODatabaseObject(Self).SetProperties(doc); //skip over TCustomer ancestor
...
end;
Posible?
@Ian creo que las campanas de alarma debe sonar para usted ahora! El diseño de esta parte de tu sistema no puede ser correcto. –
@David Heffernan Y tienes razón. Pero pretendo que el antepasado es 'TListView', realmente no puedo rediseñar una clase sobre la que no tengo control. –
@Ian ¿En qué punto tienes el control? TADODatabaseObject? TCustomer? –