Estendendo interfaces em AL
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.