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 )