TplClassManager = class
TplClassManager
è una classe composta da metodi statici e contiene le istanze delle classi coinvolte nel processo di binding. Le classi devono registrate in fase di inizializzazione e possono essere marcate come singleton.
Durante il parsing degli attributi di tipo ClassBind
, BindAPI interroga TplClassManager
per ottenere un’istanza delle classi con le cui proprietà devono essere mappate. Se una classe è marcata come singleton, ne viene creata una sola istanza alla prima richiesta; altrimenti ne viene creata una nuova istanza ad ogni richiesta.
Proprietà
class property Binder: TplAutoBinder read FBinder;
La proprietà di classe Binder
permette di accedere a un’istanza della classe TplAutoBinder
, che generalizza TplBinder
. Tale istanza è utile se si devono creare collegamenti via codice e non solo via attributi.
Metodi
class procedure RegisterClass(AClass: TClass; AsSingleton: boolean);
class function GetInstance(const AClassName: string): TObject;
class function IsSingleton(const AClassName: string): Boolean; overload;
class function IsSingleton(const AnInstance: TObject): Boolean; overload;
Esempi
RegisterClass
deve essere chiamata nella sezione initialization
per registrare le classi che devono essere oggetto di binding. In questo esempio, sono registrate due classi, la prima come singleton e la seconda no:
initialization TplClassManager.RegisterClass(TTestController, true); TplClassManager.RegisterClass(TTestSecond, false);
In questo esempio, invece, un metodo interroga la classe TplClassManager
per sapere se una classe è singleton; se non lo è, ne distrugge l’istanza.
... if TplClassManager.IsSingleton(myObject) then myObject.Free; ...
oppure
... if TplClassManager.IsSingleton(myObject.ClassName) then myObject.Free; ...
Le altre funzioni sono usate internamente alla libreria ed è improbabile che debbano essere usate in altri contesti.
Articoli più recenti: