2017-05-25 3 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事業者のように、別の1つのインターフェイスを照会する機能です。

+0

説明をありがとう! – BigONotation

関連する問題