Только если вам нужно, чтобы ваш интерфейс был совместимым с COM .
К сожалению, это также включает использование операторов is
, as
и функций QueryInterface
, Supports
- недостаток которого довольно ограничен.Таким образом, хотя это и не обязательно, но, вероятно, проще использовать GUID.В противном случае у вас останется довольно упрощенное использование:
type
ITest = interface
procedure Test;
end;
ITest2 = interface(ITest)
procedure Test2;
end;
TTest = class(TInterfacedObject, ITest, ITest2)
public
procedure Test;
procedure Test2;
end;
procedure TTest.Test;
begin
Writeln('Test');
end;
procedure TTest.Test2;
begin
Writeln('Test2');
end;
procedure DoTest(const Test: ITest);
begin
Test.Test;
end;
procedure DoTest2(const Test: ITest2);
begin
Test.Test;
Test.Test2;
end;
procedure Main;
var
Test: ITest;
Test2: ITest2;
begin
Test := TTest.Create;
DoTest(Test);
Test := nil;
Test2 := TTest.Create;
DoTest(Test2);
DoTest2(Test2);
end;