我有以下界面:
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实现的引用计数。
发布于 2017-05-25 11:14:00
引用计数不依赖于GUID,而是依赖于_AddRef()和_Release()方法实现。
由于您是从TInterfacedObject继承的,所以引用计数将适用于所有对象实例。
如果不提供GUID,就会失去从另一个接口查询一个接口的能力,例如对Supports()函数、QueryInterface()接口方法以及is和as操作符的调用。
https://stackoverflow.com/questions/44179086
复制相似问题