【问题标题】:Does reference counting still works with Delphi Interfaces when you don't provide a guid?当您不提供 guid 时,引用计数是否仍然适用于 Delphi 接口?
【发布时间】:2017-10-26 00:29:06
【问题描述】:

我有如下界面:

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 实现的引用计数?

【问题讨论】:

标签: delphi


【解决方案1】:

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

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

如果您不提供 GUID,您唯一会失去的是从另一个接口查询一个接口的能力,例如调用Supports() 函数、QueryInterface() 接口方法以及is 和@ 987654328@运营商。

【讨论】:

  • 感谢您的澄清!
猜你喜欢
  • 2011-02-28
  • 2014-05-04
  • 2014-09-02
  • 1970-01-01
  • 2015-06-26
  • 2016-11-30
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多