相关疑难解决方法(0)

在Delphi中使用接口是否需要GUID?

官方文档说它们是可选的.我知道COM interop需要每个接口的唯一标识符,但我看到的每个接口示例都有一个GUID,无论它是否与COM一起使用?如果GUID不能与COM一起使用,是否有任何好处?

delphi guid interface

19
推荐指数
2
解决办法
5411
查看次数

当一个类实现一个后代接口时,为什么它不会自动计为实现基接口?

这不会编译的原因是什么?

type
  IInterfaceA = interface ['{44F93616-0161-4912-9D63-3E8AA140CA0D}']
    procedure DoA;
  end;

  IInterfaceB = interface(IInterfaceA) ['{80CB6D35-E12F-462A-AAA9-E7C0F6FE0982}']
    procedure DoB;
  end;

  TImplementsAB = class(TSingletonImplementation, IInterfaceB)
    procedure DoA;
    procedure DoB;
  end;

var
  ImplementsAB: TImplementsAB;
  InterfaceA: IInterfaceA;
  InterfaceB: IInterfaceB;
begin
  ImplementsAB := TImplementsAB.Create;
  InterfaceA := ImplementsAB; >> incompatible types
  ...
end
Run Code Online (Sandbox Code Playgroud)

相比之下,这就是我的工作方式:

InterfaceA := ImplementsAB as InterfaceB;
Run Code Online (Sandbox Code Playgroud)

要么

InterfaceA := InterfaceB;
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果IInterfaceB继承自IInterfaceA且TImplementsAB实现了IInterfaceB,那么实现IInterfaceA并且类型兼容也是不合逻辑的?

delphi interface delphi-2010

18
推荐指数
2
解决办法
566
查看次数

标签 统计

delphi ×2

interface ×2

delphi-2010 ×1

guid ×1