[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'Variants' (#rtl)

# IVarInvokeable

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

Interface needed for custom variants that need to implement dynamic properties and methods

## Declaration

Source position: variants.pp line 214

`type IVarInvokeable = interface`
`function DoFunction();` |  | Called for methods that return a result (functions)
`function DoProcedure();` |  | Called for methods that do not return a result (procedures)
`function GetProperty();` |  | Called when a property must be read
`function SetProperty();` |  | Called when a property must be set
`end;`

## Inheritance

`IVarInvokeable` |  | Interface needed for custom variants that need to implement dynamic properties and methods

## Description

IVarInvokeable must be implemented by the TCustomVariantType descendent if the custom variant needs to implement dynamic properties and methods.

IVarInvokeable has four functions that must be implemented. Any of these functions can be called whenever a custom variant's method is invoked or a property of the variant is read or written using DispInvoke.

The TCustomVariantType descendent TInvokeableVariantType implements the needed DispInvoke to call the IVarInvokeable interface, so you can descend from that type instead when creating a new custom variant type and override the needed functions.

## See also

TInvokeableVariantType |  | TCustomVariantType descendent that implements DispInvoke
TCustomVariantType |  | Base class for a custom variant type