Delphi 表单和泛型
Delphi Form and Generics
我有一个问题,看看你能不能帮我。我有一个基本表格。
type
TForm_Base = class(TForm)
oObjectoVO : TObject;
...
procedure Search<M:class,constructor>;
...
procedure TForm_Base.Search<M>;
begin
TBussinesObj<M>.Pesquisa(FDMemTableGrid);
end;
我有一个继承基本形式的形式。
procedure TForm_Client.FormCreate(Sender: TObject);
begin
// TClient is class simple with the properties(write, read) of id, name, ...
oObjectoVO := TClient.Create;
end;
procedure TForm_Client.ButtonSearchClick(Sender: TObject);
begin
inherited;
end;
procedure TForm_Client.FormDestroy(Sender: TObject);
begin
FreeAndNil(oObjectoVO);
end;
我的问题就在这里。我无法将在客户端表单中实例化的对象的类型传递给通用方法 (Search),再传递给基本表单。不知道可不可以
procedure TForm_Base.ButtonSearchClick(Sender: TObject);
begin
Search<oObjectoVO.ClassType>; ******* Error *******
end;
坦克。
泛型是一种编译时结构。考虑这段代码:
Search<oObjectoVO.ClassType>
您正在尝试使用直到 运行 时间才知道的类型实例化泛型。
您需要将 Search
从通用更改为非通用并接受指定 class 的参数。
我有一个问题,看看你能不能帮我。我有一个基本表格。
type
TForm_Base = class(TForm)
oObjectoVO : TObject;
...
procedure Search<M:class,constructor>;
...
procedure TForm_Base.Search<M>;
begin
TBussinesObj<M>.Pesquisa(FDMemTableGrid);
end;
我有一个继承基本形式的形式。
procedure TForm_Client.FormCreate(Sender: TObject);
begin
// TClient is class simple with the properties(write, read) of id, name, ...
oObjectoVO := TClient.Create;
end;
procedure TForm_Client.ButtonSearchClick(Sender: TObject);
begin
inherited;
end;
procedure TForm_Client.FormDestroy(Sender: TObject);
begin
FreeAndNil(oObjectoVO);
end;
我的问题就在这里。我无法将在客户端表单中实例化的对象的类型传递给通用方法 (Search),再传递给基本表单。不知道可不可以
procedure TForm_Base.ButtonSearchClick(Sender: TObject);
begin
Search<oObjectoVO.ClassType>; ******* Error *******
end;
坦克。
泛型是一种编译时结构。考虑这段代码:
Search<oObjectoVO.ClassType>
您正在尝试使用直到 运行 时间才知道的类型实例化泛型。
您需要将 Search
从通用更改为非通用并接受指定 class 的参数。