我正在尝试实现 Spring 4 Delphi,并且只对接口而不是类进行编程。但是,当您想使用 TObjectList 时,这似乎是不可能的。
考虑以下代码:
unit Unit1;
interface
uses
Spring.Collections,
Spring.Collections.Lists;
type
IMyObjParent = interface
['{E063AD44-B7F1-443C-B9FE-AEB7395B39DE}']
procedure ParentDoSomething;
end;
IMyObjChild = interface(IMyObjParent)
['{E063AD44-B7F1-443C-B9FE-AEB7395B39DE}']
procedure ChildDoSomething;
end;
implementation
type
TMyObjChild = class(TInterfacedObject, IMyObjChild)
protected
procedure ParentDoSomething;
public
procedure ChildDoSomething;
end;
{ TMyObj }
procedure TMyObjChild.ChildDoSomething;
begin
end;
procedure TMyObjChild.ParentDoSomething;
begin
end;
procedure TestIt;
var
LMyList: IList<IMyObjChild>;
begin
TCollections.CreateObjectList<IMyObjChild>;
//[DCC Error] Unit1.pas(53): E2511 Type parameter 'T' must be a class type
end;
end.
我知道我可以在上面的示例中将 IMyObjChild 更改为 TMyObjChild,但是如果我需要在另一个单元或表单中进行更改,那么我该怎么做呢?
一旦你需要一个 TObjectList,试图只对接口进行编程似乎太难或不可能了。
Grrr ...有什么想法或帮助吗?