如何将接口名称映射到不同的方法名称?

时间:2009-09-07 18:43:47

标签: delphi interface

如果我有一个实现接口的对象,它会默认将接口方法自动映射到具有相同名称和签名的类的方法上。有没有办法覆盖它并将接口方法映射到具有相同签名但名称不同的方法? (这可能很有用,例如,如果我实现了两个接口,这两个接口都有一个具有相同名称和签名的方法,我希望能够用它们做不同的事情。)

2 个答案:

答案 0 :(得分:9)

这是Erwin回答的代码示例

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;

答案 1 :(得分:8)

确实有可能。该技术称为Method Resolution Clause