Estendendo interfaces em AL

Concluído

Uma interface em AL é um contrato sintático que pode ser implementado por um método não abstrato. A interface é usada para definir quais recursos devem estar disponíveis para um objeto, enquanto permite que as implementações reais sejam diferentes, se estiverem em conformidade com a interface definida. Para obter mais informações, confira Interfaces em AL.

Desde o ciclo de lançamentos 2 de 2024 do Business Central, interfaces extensíveis em AL são suportadas. A extensão de interfaces permite que você crie uma extensão flexível e adaptável. Você pode adicionar novas funcionalidades sem alterar o sistema principal, o que pode economizar tempo e recursos, além de reduzir o risco de introduzir erros na base de código existente.

Ao declarar uma interface, você pode estender uma ou mais interfaces existentes. A nova interface herda todos os métodos das interfaces que estende. Assim, quando você implementa uma interface que estende outras interfaces, a classe ou objeto de implementação deve fornecer implementações para todos os métodos definidos nas interfaces estendidas, além de quaisquer métodos definidos na nova interface em si. Isso garante que o implementador cumpra o contrato especificado por todas as interfaces envolvidas.

Sintaxe

No exemplo, TheImplementor pode ser usado como IFoo, IBar e IFooBar. A sintaxe para estender uma interface é a seguinte:

interface IFoo
{
    procedure Foo();    
}

interface IBar
{
    procedure Bar();
}

interface IFooBar extends IFoo, IBar
{
    procedure FooBar();
}

codeunit 10 TheImplementor implements IFooBar
{
    // Must implement IFoo, IBar, IFooBar 
}

Operadores e interfaces extensíveis

Interfaces extensíveis em AL também dão suporte ao uso dos operadores de teste e conversão is e as. O operador is permite verificar se um objeto implementa uma interface específica, enquanto o operador as permite converter um objeto em um tipo de interface específico. Essa funcionalidade melhora a flexibilidade e a robustez do seu código, pois permite a verificação e a conversão de tipo dinâmico. Para obter mais informações, consulte Operadores de teste e conversão de tipo para interfaces.