BindAPI: TplClassManager

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.

Le classi


Articoli più recenti:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *