我有以下接口:
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()
接口方法以及is
和as
运算符时。