我一直在尝试定义一个通用的、可继承的TSingleton类。以下是我正在进行的内容:
TSingleton<RealClass, InheritsFrom : class> = class(InheritsFrom)
strict private
class var FInstance : RealClass;
protected
procedure InstanceInitialization;virtual;
public
destructor Destroy; override;
class procedure Create; reintroduce;
class function Instance : RealClass;
class procedure InstanceFree;
end;
目标是能够在继承树中“插入”单例模式。 因此,不要像声明以下内容:
TMySingletonComponent = class(TComponent)
end;
如果需要在那里实现单例模式,我会声明类似于以下内容的代码:
TMyGenericSingletonComponent = class(TSingleton<TMyGenericSingletonComponent,TComponent>)
end;
很遗憾,这样做行不通。我在D2010中得到以下错误:
TSingleton<RealClass, InheritsFrom : class> = class(InheritsFrom) ///E2021 Class type required
现在我想知道,在Delphi XE中是否可行?是否有一些“干净的黑客”可以用来使它在D2010中工作?是否存在一些根本性原因,导致这不能工作?