Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

Re: Custom compiler message beim Aufruf einer Methode möglic

  Alt 2. Dez 2009, 10:58
Die Idee war eher folgende:

Delphi-Quellcode:
unit Singleton;

interface

type
  TSingleton<T: class, constructor> = class
  private
    class var FInstance: T;
    class constructor Create;
    class destructor Destroy;
  public
    class function NewInstance: TObject; override;
    class property Instance: T read FInstance;
  end;

implementation

uses
  SysUtils;

class constructor TSingleton<T>.Create;
begin
  FInstance := T.Create;
end;

class destructor TSingleton<T>.Destroy;
begin
  FInstance.Free;
end;

class function TSingleton<T>.NewInstance: TObject;
begin
  raise Exception.CreateFmt('Instantiation of TSingleton<%s> not allowed', [T.ClassName]);
end;

end.
In einer anderen unit wird dann z.B. TFooSingleton = class(TSingleton<TFoo>) deklariert und auch nur diese Klasse nach außen freigegeben. Auch die unit Singleton sollte nicht im uses benutzt werden, sondern nur die, wo die konkrete Singleton-Klasse definiert wurde (in dem Beispiel TFooSingleton).
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat