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