Vielen Dank für die Erklärung. Mit reintroduce funktioniert es wie gewünscht. Damit wäre meine Frage erledigt.
Jetzt kommt der philosophische Teil, wo über den besten Weg diskutiert werden darf
Wenn das keine rein theoretische Frage ist, dann könnte das ein Hinweis auf ein schlechtes Design sein. Meistens findet man ein 'Workaround', d.h. eine Umformulierung des Codes, der sich im Nachhinein als sauberer herausstellt. Wieso z.B. muss die neue Methode genauso heißen? Macht sie wirklich das Gleiche?
Sie macht das Gleiche und noch ein bisschen mehr.
Ich könnte sie auch umbenennen, wobei ich mich frage, ob das in diesem Fall sauberer wäre.
Hier der "echte" Fall: es geht um die UniDac-Komponenten. Dazu gibt es den
Sql-Monitor, der alle
Sql-Anfragen, die von den Komponenten Richtung Server geschickt werden, ausgibt. Das ist sehr praktisch für Debuggingzwecke.
Die Connection bietet die Methode "MonitorMessage", mit der ich eine eigene Meldung im
Sql-Monitor ausgeben kann (auch zu Debugzwecken manchmal hilfreich).
Die wollte ich nun mit dem Transactionhandling verbinden:
Delphi-Quellcode:
TmyConnection = class(TUniConnection)
private
{ Private-Deklarationen }
protected
{ Protected-Deklarationen }
public
procedure StartTransaction(ASqlMonitorMessage : String); overload;
procedure Commit (ASqlMonitorMessage : String); reintroduce; overload;
procedure Rollback (ASqlMonitorMessage : String); reintroduce; overload;
published
{ Published-Deklarationen }
end;
Was dann entsprechend so implementiert ist:
Delphi-Quellcode:
procedure TmyConnection.Commit(ASqlMonitorMessage: String);
begin
MonitorMessage('<< Committing Transaction: ' + ASqlMonitorMessage);
Commit;
end;
procedure TmyConnection.Rollback(ASqlMonitorMessage: String);
begin
MonitorMessage('!! Rolling back Transaction: ' + ASqlMonitorMessage);
Rollback;
end;
procedure TmyConnection.StartTransaction(ASqlMonitorMessage: String);
begin
MonitorMessage('>> Starting Transaction: ' + ASqlMonitorMessage);
inherited StartTransaction;
end;
nun kann ich in TmyConnection.StartTransaction/Commit/Rollback einen eigenen Text mitgeben, der für die Fehlersuche (insbesondere beim Kunden, wo ich kein Delphi installiert hab) hilfreich sein soll.
Ich hätte natürlich auch die Methoden "StartTransactionWithMessage" oder so nennen können. Aber wäre das hier sinnvoll/sauber?
Ist sicher Ansichtssache.