在另一个泛型类声明的约束中使用泛型接口

时间:2016-05-17 11:35:26

标签: delphi generics

使用Delphi 10 Seattle,是否可以使用通用接口作为另一个泛型类定义的接口约束?

我有这个界面声明:

IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE> = interface(IrmOpenAPIRequest)
  procedure DoSomething;
end;

我想声明一个以上类型作为约束的泛型类,所以我可以在TBaseConfigItem_Model的实现中使用DoSomething方法。

TBaseConfigItem_Model<REQUEST: IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE>> = class(...);

这给出了编译错误:未声明的标识符&#39; REQUESTDATA&#39;

我该如何做到这一点?

P.S。为清楚起见,省略了一些实施细节

1 个答案:

答案 0 :(得分:2)

您当然可以使用通用接口作为约束,但是您需要引入缺少的通用参数。这就是编译器错误消息告诉你的。以下编译:

type
  TBaseConfigItem_Model<REQUESTDATA; RESPONSE; REQUEST: 
    IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE>> = class
  public
    procedure DoSomething;
  end;