我有以下界面:
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
实施的引用计数?
答案 0 :(得分:15)
引用计数不依赖于GUID
,而是依赖_AddRef()
和_Release()
方法实现。
由于您从TInterfacedObject
继承,引用计数将适用于所有对象实例。
如果您不提供GUID,唯一丢失的是能够从另一个接口查询一个接口,例如调用Supports()
函数,QueryInterface()
接口方法,以及is
和as
运营商。