unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, fgl;
type
ITest = interface(IUnknown)
['{1416EB7E-39B0-4134-BA20-F363D0B8C476}']
procedure Test;
end;
type
TListInterface = specialize TFPGInterfacedObjectList<ITest>;
type
{ TTestClass }
TTestClass = class(TInterfacedObject, ITest)
procedure Test;
end;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FListInterface: TListInterface;
FTestClass: TTestClass;
public
procedure ExecuteInterface(Test: ITest);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TTestClass }
procedure TTestClass.Test;
begin
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FListInterface := TListInterface.Create;
FTestClass := TTestClass.Create;
ExecuteInterface(FTestClass);
FListInterface.Add(FTestClass);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FListInterface.Free;
end;
procedure TForm1.ExecuteInterface(Test: ITest);
begin
end;
end.