首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Delphi中使用接口需要GUID吗?

在Delphi中使用接口需要GUID吗?
EN

Stack Overflow用户
提问于 2010-06-08 02:46:03
回答 1查看 6.4K关注 0票数 19

官方文档说它们是可选的。我知道COM互操作需要每个接口都有一个唯一的标识符,但是我看到的每个接口示例都有一个GUID,不管它是否与COM一起使用?如果GUID不与COM一起使用,那么包含GUID有什么好处吗?

EN

回答 1

Stack Overflow用户

发布于 2010-06-08 02:50:50

只有当你需要你的接口是compatible with COM的时候。

不幸的是,这也包括使用isas运算符和QueryInterfaceSupports函数-这些函数的缺乏是相当有限的。因此,虽然不是严格要求,但使用GUID可能更容易一些。否则,您只剩下相当简单的用法:

代码语言:javascript
复制
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;
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2992183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档