Informazioni sul test del tipo e il cast degli operatori per le interfacce

Completato

Nel linguaggio AL è possibile definire interfacce, ovvero un contratto sintattico che è possibile implementare con un metodo non astratto. Da Business Central 2024 ciclo di rilascio 2, è anche possibile estendere un'interfaccia, che favorisce una progettazione più flessibile e adattabile. Per altre informazioni, consultare Estensione delle interfacce in AL.

In relazione all'estendibilità delle interfacce, è utile essere in grado di eseguire il test del tipo e il cast delle interfacce. Sono stati aggiunti due operatori, "is" e "as", per facilitare queste operazioni. La parola chiave "is" controlla se un'interfaccia è di un tipo specifico, verifica utile per garantire la sicurezza dei tipi nel codice. La parola chiave "as", d'altra parte, tenta di eseguire il cast di un'interfaccia a un'altra. Questi operatori migliorano l'estendibilità e l'utilità delle interfacce in AL, in linea con la più ampia pratica di programmazione di garantire che questi sistemi siano creati tenendo presenti la futura crescita e l'adattabilità, per garantire una maggiore semplicità di aggiornamenti e manutenzione.

Test del tipo con l'operatore "is"

Il test del tipo con l'operatore "is" è utile quando si estendono le interfacce, poiché permette di verificare se un'istanza di un'interfaccia o il contenuto di una variante supporta un'interfaccia specifica.

Di seguito è riportata la sintassi per l'uso della parola chiave "is":

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:
al-languageCopy
procedure TestVariant(v: Variant)
begin
    if v is IBar then
        Message('I support IBar');
end;

Cast con l'operatore "as"

L'operatore "as" permette il cast dell'istanza di un'interfaccia a un'interfaccia specifica. Se l'interfaccia di origine non implementa l'interfaccia di destinazione, restituisce un errore in runtime.

Di seguito è riportato un esempio:

procedure CastInterface(intf: Interface IFoo): Interface IBar
begin
    exit(intf as IBar); // Throws an error if 'intf' doesn't implement 'IBar'
end;

La parola chiave "as" opera allo stesso modo con le varianti:

procedure CastInterface(v: Variant): Interface IBar
begin
    exit(v as IBar); // Throws an error if 'v' doesn't implement 'IBar'
end;