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

时间:2017-05-25 11:10:14

标签: 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实施的引用计数?

1 个答案:

答案 0 :(得分:15)

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

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

如果您不提供GUID,唯一丢失的是能够从另一个接口查询一个接口,例如调用Supports()函数,QueryInterface()接口方法,以及isas运营商。