Name
TInterfacedObject Type
Syntax
type
TInterfacedObject = class(TObject, IUnknown)
protected
FRefCount: Integer;
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
public
procedure AfterConstruction; override;
procedure BeforeDestruction; override;
class function NewInstance: TObject; override;
property RefCount: Integer read FRefCount;
end;Description
The TInterfacedObject class implements the
IUnknown interface with the reference counting
semantics that Delphi and COM expect. It also implements
QueryInterface to call
GetInterface. In other words,
TInterfacedObject provides useful implementations
of IUnknown’s methods, so you can and should
use TInterfacedObject as a base class for any
class that must implement one or more
interfaces.
Tips and Tricks
If you are using COM, you probably want to use one of the classes derived from
TInterfacedObjectorTAggregatedObject, which you can find in theComObjandComServunits.If you are not using COM,
TInterfacedClassprovides the minimum functionality you need to take full advantage of Delphi’s interfaces.You don’t have to use
TInterfacedObject. Any class can implement the methods ofIUnknown. When implementingIUnknownin another class, you might want to copy the implementation of the_AddRef,_Release, andQueryInterfacemethods fromTInterfacedObject.
Example
type // Interface for accessing an object IObject = interface ['{618977EA-1ADA-11D3-B1A8-00105AA9C2AD}'] ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access