Delphi 泛型:无法将 class 和构造函数约束的泛型类型转换为接口

Delphi Generics: cannot cast class and constructor constrained generic type to an interface

procedure Test<TType: class, constructor>;

procedure TTestClass.Test<TType>;
var
   Obj1: IInterface;
begin
   Obj1 := TType.Create as IInterface;
end;

给出以下编译错误:

[DCC Error] TestCNCTypesSerialization.pas(76): E2015 Operator not applicable to this operand type

我不明白为什么。而且我找不到一种方法来完成这项工作...

谢谢!

编译器没有理由相信泛型类型实现了IInterface。您没有将泛型类型限制为从实现 IInterface 的 class 派生。

您可以用那种方式限制 class,但这可能过于严格。或者使用 Supports 获取接口。