官方文档说它们是可选的。我知道COM互操作需要每个接口都有一个唯一的标识符,但是我看到的每个接口示例都有一个GUID,不管它是否与COM一起使用?如果GUID不与COM一起使用,那么包含GUID有什么好处吗?
发布于 2010-06-08 02:50:50
只有当你需要你的接口是compatible with 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;
https://stackoverflow.com/questions/2992183
复制相似问题