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
获取接口。
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
获取接口。