Rtti.TVirtualInterface (Delphi)
Contents
Description
This example demonstrates the capabilities of the TVirtualInterface class. An implementation of a specific interface (ISpecificInterface) is created at run time with the help of TVirtualInterface. An instance of ISpecificInterface ("virtual interface") is obtained from a TVirtualInterface instance by casting (another way is to use QueryInterface). The TVirtualInterface instance is not destroyed explicitly; it is destroyed automatically when the application ends.
An event is defined so that every interface method call will display its name on the console.
Code
{$APPTYPE CONSOLE}
uses
  SysUtils, Rtti;
type
  ISpecificInterface = interface(IInvokable)
    ['{281D8B97-397E-430A-895A-9CA4E1F5FB5F}']
    procedure SpecificProcedure;
  end;
procedure AProcedure(Method: TRttiMethod; const Args: TArray<TValue>;
  out Result: TValue);
begin
  Writeln(Method.ToString);
end;
var
  ISpecificInterfaceInstance: ISpecificInterface;
begin
  ISpecificInterfaceInstance := TVirtualInterface.Create
    (TypeInfo(ISpecificInterface), AProcedure) as ISpecificInterface;
  ISpecificInterfaceInstance.SpecificProcedure;
end. // TVirtualInterface ref. counter is decremented
Console Output
procedure SpecificProcedure
Uses
- System.Rtti.TVirtualInterface ( fr | de | ja )
 - System.Rtti.TVirtualInterfaceInvokeEvent ( fr | de | ja )