Estensione di interfacce in AL

Completato

Un'interfaccia in AL è un contratto sintattico che è possibile implementare con un metodo non astratto. L'interfaccia è usata per definire quali funzionalità devono essere disponibili per un oggetto, consentendo allo stesso tempo che le implementazioni effettive differiscano, a condizione che rispettino l'interfaccia definita. Per altre informazioni, consultare Interfacce in AL.

A partire da Business Central 2024 ciclo di rilascio 2, le interfacce estendibili in AL sono supportate. L'estensione delle interfacce permette di creare un'estensione flessibile e adattabile. È possibile aggiungere nuove funzionalità senza alterare il sistema core, il che permette di risparmiare tempo e risorse, oltre a ridurre il rischio di introdurre degli errori nella base di codice esistente.

Quando si dichiara un'interfaccia, è possibile estendere una o più interfacce esistenti. La nuova interfaccia eredita tutti i metodi dalle interfacce che estende. Pertanto, quando si implementa un'interfaccia che estende altre interfacce, la classe o l'oggetto di implementazione deve fornire implementazioni per tutti i metodi definiti nelle interfacce estese, oltre a tutti i metodi definiti nella nuova interfaccia stessa. Ciò garantisce che l'implementatore aderisca al contratto specificato da tutte le interfacce coinvolte.

Sintassi

Nell'esempio, è possibile usare TheImplementor come IFoo, IBar e IFooBar. La sintassi per l'estensione di un'interfaccia è la seguente:

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 
}

Interfacce e operatori estendibili

Le interfacce estendibili in AL supportano anche l'uso degli operatori di test e cast "is" e "as". L'operatore "is" permette di verificare se un oggetto implementa un'interfaccia specifica, mentre l'operatore "as" permette di eseguire il cast di un oggetto a un tipo di interfaccia specifico. Questa funzionalità migliora la flessibilità e l'affidabilità del codice poiché garantisce il controllo dinamico dei tipi e il casting. Per altre informazioni, consultare Test del tipo e operatori di cast per le interfacce.