我正在尝试定义泛型数据模块,如下所示:
TDM<T> = class(TDataModule)
public
function GetValue:T;virtual;abstract;
end;
但是当我这样做时,Delphi 误解了数据模块并认为它的形式(将客户端宽度、字体等表单属性添加到 .dfm 文件中)。我希望这个数据模块仅用于继承,所以我尝试将其作为没有 .dfm 文件的简单类,然后制作从它继承的真实数据模块(带有 .dfm 文件)。例子:
TDataModule2 = class(TDM<Integer>)
public
function GetType:Integer;override;
end;
一切看起来都很棒,但只是在我关闭和打开项目的那一刻。在项目打开时,Delphi 出于某种原因再次将 TDataModule2 解释为表单(这会导致运行时出现异常)。
我正在使用德尔福 XE。有没有办法让这成为可能?