DefaultImplementation Property
Version: Available or changed with runtime version 5.0.
Specifies the default implementer for the enum value if there is no explicit implementer set for the value.
Applies to
- Enum Type
Syntax
DefaultImplementation = Interface = InterfaceImplementation;
Example
The following example illustrates different implementations of the IFoo
interface. SomeEnum
has DefaultImplementation
set to catch the case where some extension uses an enum value that does not implement the IFoo
interface.
pageextension 50130 CustListExt extends "Customer List"
{
trigger OnOpenPage()
var
ifoo: Interface IFoo;
e: enum SomeEnum;
begin
e := SomeEnum::Yes;
ifoo := e;
ifoo.Foo(); // => YesFooImpl specified in Implementation on Yes value
e := SomeEnum::No;
ifoo := e;
ifoo.Foo(); // => DefaultFooImpl specified in DefaultImplementation
e := 2; // No enum value matches this.
ifoo := e;
ifoo.Foo(); // => UnknownFooImpl specified in UnknownImplementation
end;
}
interface IFoo
{
procedure Foo()
}
codeunit 50145 ErrorFooImpl implements IFoo
{
procedure Foo()
begin
Message('Bad FOO')
end;
}
codeunit 50146 DefaultFooImpl implements IFoo
{
procedure Foo()
begin
Message('Default FOO')
end;
}
codeunit 50147 YesFooImpl implements IFoo
{
procedure Foo()
begin
Message('Yes FOO')
end;
}
enum 50135 SomeEnum implements IFoo
{
Extensible = true;
UnknownValueImplementation = IFoo = ErrorFooImpl;
DefaultImplementation = IFoo = DefaultFooImpl;
value(0; Yes)
{
Implementation = IFoo = YesFooImpl;
}
value(1; No)
{
// Nothing specified. Using defaults
}
}
Remarks
Adding a new interface to an existing, extensible enum, requires that all extensions of that enum provide an implementations for the interface, which is a breaking change. Providing a default implementation by using the DefaultImplementation
property can be used to make such new additions non-breaking.
Related to DefaultImplementation
is the UnknownValueImplementation
property, used for handling unknown enum values. For more information, see UnknownValueImplementation Property.