Ich habe sowas mal für einen Destruktor gebraucht und bin zu folgender Lösung gekommen.
Delphi-Quellcode:
type
TQueryObj = class(TQuery)
private
[...]
public
[...]
published
procedure Free; deprecated;
end;
Delphi-Quellcode:
{$WARN SYMBOL_DEPRECATED OFF}
procedure TQueryObj.Free;
begin
inherited;
end;
{$WARN SYMBOL_DEPRECATED ON}
Da das Objekt nicht freigegeben werden darf, sondern von einem QueryPool verwaltet wird, der auch für die Freigabe zuständig ist, wird so unterbunden, dass irgendwo direkt .Free aufgerufen wird. Zumindest gibt es dann eine Warnung.
Der Compilerschalter bewirkt in diesem Fall nur, dass die Methode selbst nicht auch schon im Quellcode angemeckert wird.