delphi - 具有参数约束的泛型构造函数?

标签 delphi generics

TMyBaseClass=class
  constructor(test:integer);
end;

TMyClass=class(TMyBaseClass);

TClass1<T: TMyBaseClass,constructor>=class()
  public
    FItem: T;
    procedure Test;
end;

procedure TClass1<T>.Test;
begin
  FItem:= T.Create;
end;

var u: TClass1<TMyClass>;
begin
  u:=TClass1<TMyClass>.Create();
  u.Test;
end;

如何使用整数参数创建类。解决方法是什么?

最佳答案

只需类型转换为正确的类:

type
  TMyBaseClassClass = class of TMyBaseClass;

procedure TClass1<T>.Test;
begin
  FItem:= T(TMyBaseClassClass(T).Create(42));
end;

此外,将构造函数设为虚拟可能是个好主意。

关于delphi - 具有参数约束的泛型构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215692/

相关文章:

delphi - 如何让这个闪屏显示3秒?

c# - 为什么泛型 IList<> 不继承非泛型 IList

c++ - 通过某种形式的反射对 C++ 中的 C 数据结构进行通用访问?

java - Java泛型方法的参数

c# - IList<变量类型>;不用泛型解决

c# - 预定义列表容量

delphi - Delphi 7 中找不到文件

delphi 2006 - 是否可以找出资源名称是否存在?

android - Delphi Android 应用程序启动后崩溃

delphi - 如何最好地证明我的应用程序需要连接到 Outlook?