加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi泛型类可以从它的类参数中下降吗?

发布时间:2020-12-15 09:37:48 所属栏目:大数据 来源:网络整理
导读:我一直在尝试定义一个通用的,可继承的TSingleton类.这是我正在进行的工作: TSingletonRealClass,InheritsFrom : class = class(InheritsFrom) strict private class var FInstance : RealClass; protected procedure InstanceInitialization;virtual; publi
我一直在尝试定义一个通用的,可继承的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中完成这项工作?是否有一些根本原因导致这种情况无效?

解决方法

按照设计,您不能创建从其类型参数派生的泛型类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读