Wenn ich ein Objekt habe, das eine Schnittstelle implementiert, werden die Methoden der Schnittstelle standardmäßig automatisch auf die Methoden der Klasse mit demselben Namen und derselben Signatur abgebildet. Gibt es eine Möglichkeit, dies zu überschreiben und eine Schnittstellenmethode auf eine Methode mit derselben Signatur, aber einem anderen Namen abzubilden? (Dies könnte zum Beispiel nützlich sein, wenn ich zwei Schnittstellen implementiere, von denen beide eine Methode mit demselben Namen und derselben Signatur haben, und ich möchte unterschiedliche Dinge mit ihnen tun können).
Antworten
Zu viele Anzeigen?
Lars Truijens
Punkte
41774
Dies ist ein Code-Beispiel für Erwins Antwort
type
ISomeInterface = interface
procedure SomeMethod;
end;
IOtherInterface = interface
procedure SomeMethod;
end;
TSomeClass = class(TInterfacedObject, ISomeInterface, IOtherInterface)
public
procedure ISomeInterface.SomeMethod = SomeInterfaceSomeMethod;
procedure IOtherInterface.SomeMethod = OtherInterfaceSomeMethod;
procedure SomeMethod; // TSomeClass.SomeMethod
procedure SomeInterfaceSomeMethod; // ISomeInterface.SomeMethod
procedure OtherInterfaceSomeMethod; // IOtherInterface.SomeMethod
end;
Das ist in der Tat möglich. Die Technik heißt Methode Auflösungsklausel .