【发布时间】:2016-01-31 22:22:53
【问题描述】:
假设我有一堂课
TController<T_Ui: TGui; T_Man: TManager> = class
end;
如果我尝试将此类用作这样的通用过程的约束:
procedure MyProc<T: TController<T_Ui, T_Man>>(ACont: T);
我收到一个错误undefined identifier T_Ui。
有没有比定义过程更短的方法
procedure MyProc<T_Ui: TGui; TMan: TManager; T: TController<T_Ui, T_Man>>(ACont: T);
如果我想要的只是对 TController 类型的约束 T?
已编辑:
如果我可以定义:
procedure MyProc<T: TController<*, *>>(ACont: T);
编译器应该清楚一切。
我的问题是,而不是写
MyProc<TMyController>(Cont);
我要写
MyProc<TMyUi, TMyManager, TMyController>(Cont);
【问题讨论】:
-
如果您必须使用泛型,那么我认为@DavidHeffernan 的回答就足够了。但是不要忘记
type TGuiClass = class of TGui;等类类型,您可以将其作为参数传递、存储在变量中并像通常的类型一样使用它们。 -
@Abelisto 对于我的具体问题,泛型是可行的方法,但感谢您的提示。
标签: delphi delphi-xe4