2017-05-25 57 views
5

我有以下接口:當你不提供一個GUID時,引用計數是否仍然可以與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; 

注意,我提供​​的接口(因爲每一個實例以前的通用接口是不同的接口,它們不應共享相同的​​)。不過,我不確定這是否違反了TInterfacedObject實施的引用計數?

+1

另請參見[是否需要在Delphi中使用GUID?](https://stackoverflow.com/q/2992183/576719)。 –

回答

15

引用計數不依賴於GUID,而是依賴於_AddRef()_Release()方法的實現。

由於您從TInterfacedObject繼承,引用計數將適用於所有對象實例。

你輸了,如果你不提供一個GUID的唯一一件事就是查詢從另一個接口,如調用的函數Supports()QueryInterface()接口的方法,以及isas運營商的能力。

+0

感謝您的澄清! – BigONotation

相關問題