3 Stimmen

Wie kann man Schnittstellennamen verschiedenen Methodennamen zuordnen?

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).

10voto

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;

8voto

Erwin Punkte 1876

Das ist in der Tat möglich. Die Technik heißt Methode Auflösungsklausel .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X