procedure Test<TType: class, constructor>;

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


给出以下编译错误:


[DCC错误] TestCNCTypesSerialization.pas(76):E2015操作员未
适用于此操作数类型


我不理解为什么。而且我找不到办法使这项工作...

谢谢!

最佳答案

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

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

07-28 06:41