Type testing and casting operators for interfaces
APPLIES TO: Business Central 2024 release wave 2 and later.
In the AL language, you can define interfaces, which is a syntactical contract that can be implemented by a nonabstract method. With Business Central 2024 release wave 2, you can also extend an interface, which allows for a more flexible and adaptable design. Learn more in Extending interfaces in AL. In connection with the extensibility of interfaces, it's useful to be able to do type testing and casting of interfaces. For this purpose, 2 operators is
and as
are availble.
Type testing with the is
operator
Type testing with the is
operator is useful when extending interfaces, because it allows you to test whether an instance of an interface or the content of a variant supports a specific interface.
Here’s the syntax for using the is
keyword:
procedure TestInterface(intf: Interface IFoo)
begin
if intf is IBar then
Message('I also support IBar');
end;
You can also use the is
operator with variants:
procedure TestVariant(v: Variant)
begin
if v is IBar then
Message('I support IBar');
end;
Casting with the as
operator
The as
operator is used for casting an instance of an interface to a specific interface. If the source interface doesn't implement the target interface, it throws an error at runtime. Here’s an example:
procedure CastInterface(intf: Interface IFoo): Interface IBar
begin
exit(intf as IBar); // Throws an error if 'intf' doesn't implement 'IBar'
end;
Similarly, the as
keyword works with variants:
procedure CastInterface(v: Variant): Interface IBar
begin
exit(v as IBar); // Throws an error if 'v' doesn't implement 'IBar'
end;