Estoy usando una gran biblioteca de terceros de Delphi sin código fuente, esta biblioteca tiene varias clases con métodos abstractos. Necesito determinar cuándo un método abtract es implementado por una clase Descendant en tiempo de ejecución para evitar el EAbstractError: Abstract Error
y muestra un mensaje personalizado para el usuario o usa otra clase en su lugar.¿Cómo puedo determinar si se implementa un método abstracto?
por ejemplo en este código Quiero verificar en tiempo de ejecución si se implementa MyAbstractMethod
.
type
TMyBaseClass = class
public
procedure MyAbstractMethod; virtual; abstract;
end;
TDescendantBase = class(TMyBaseClass)
public
end;
TChild = class(TDescendantBase)
public
procedure MyAbstractMethod; override;
end;
TChild2 = class(TDescendantBase)
end;
¿Cómo puedo determinar si un método abstracto se implementa en una clase descendiente en tiempo de ejecución?
Gracias, pero si uso de esta manera, necesito implementar una función para cada tipo de clase y prefiero una solución más general. – Salvador
No estoy seguro si su código es correcto. 'ImplementsAbstractMethod (TChild2.Create)' devolverá true, pero ni 'TChild2', ni' TDescendantBase' han anulado el resumen 'MyAbstractMethod' de' TMyBaseClass'. http://pastebin.com/JufNPJkg –
@rinntech: Gracias por el aviso. He actualizado la respuesta con el código correcto. –