Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在另一个泛型类声明的约束中使用泛型接口_Delphi_Generics - Fatal编程技术网

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

Delphi 在另一个泛型类声明的约束中使用泛型接口,delphi,generics,Delphi,Generics,使用Delphi10,是否可以使用泛型接口作为另一个泛型类定义的接口约束 我有以下接口声明: IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE> = interface(IrmOpenAPIRequest) procedure DoSomething; end; IrmOpenAPIConfigurationItemRequest=接口(IrmOpenAPIRequest) 程序剂量测定; 结束; 我想声明一个具

使用Delphi10,是否可以使用泛型接口作为另一个泛型类定义的接口约束

我有以下接口声明:

IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE> = interface(IrmOpenAPIRequest)
  procedure DoSomething;
end;
IrmOpenAPIConfigurationItemRequest=接口(IrmOpenAPIRequest)
程序剂量测定;
结束;
我想声明一个具有上述类型的泛型类作为约束,这样我就可以在TBaseConfigItem_模型的实现中使用DoSomething方法

TBaseConfigItem_Model<REQUEST: IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE>> = class(...);
TBaseConfigItem_Model=class(…);
这将导致编译错误:未声明的标识符“REQUESTDATA”

我怎样才能做到这一点


另外,为了清晰起见,省略了一些实现细节

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

type
  TBaseConfigItem_Model<REQUESTDATA; RESPONSE; REQUEST: 
    IrmOpenAPIConfigurationItemRequest<REQUESTDATA, RESPONSE>> = class
  public
    procedure DoSomething;
  end;
类型
TBaseConfigItem_Model=class
公众的
程序剂量测定;
结束;

感谢您的回答,它实际上是编译的,但不需要请求参数,因为我现在可以声明类型为的变量;IrmoPenapicConfiguration请求记住,我只能看到问题中的内容,而没有您拥有的更大的图景。我想我回答了你的问题,不是吗?哦,谢谢你在泛型约束中纠正了我的语法。我总是忘记那个问题。也许这就是你的评论的意思。它是否也作为一种约束作用于类?e、 g.我有一个这样的泛型类定义:
TShape
,那么我可以声明另一个类似于:
TModel
的泛型类吗?它不能编译。我希望强制TModel的任何子类都必须使用TShape的子类。