当您不提供 GUID 时,引用计数是否仍适用于 Delphi 接口?



我有以下接口:

type IDataAccessObject<Pk; T:class> = interface
   getByPrimaryKey(key: PK) : T;
   //... more methods
end;

接口的实现如下:

type TMyClassDAO = class(TInterfacedObject, IDataAccessObject<integer, TMyClass>)
   getByPrimaryKey(key:integer) : TMyClass;
   // more methods
end;

请注意,我没有为接口提供guid(因为前一个泛型接口的每个实例化都是不同的接口,它们不应该共享相同的guid(。但是,我不确定这是否会破坏TInterfacedObject实施的引用计数?

引用计数不依赖于GUID,而是依赖于_AddRef()_Release()方法的实现。

由于您继承自 TInterfacedObject ,引用计数将适用于所有对象实例。

如果不提供 GUID,则唯一丢失的是从一个接口查询另一个接口的能力,例如在调用Supports()函数、QueryInterface()接口方法以及isas运算符时。

相关内容

  • 没有找到相关文章

最新更新