Extension d’interfaces dans AL

Effectué

Une interface dans AL est un contrat syntaxique pouvant être implémenté par une méthode non abstraite. L’interface permet de définir les fonctionnalités devant être disponibles pour un objet, tout en permettant aux implémentations réelles de différer, si elles sont conformes à l’interface définie. Pour en savoir plus, consultez Interfaces dans AL.

Depuis la 2e vague de lancement 2024 de Business Central, les interfaces extensibles dans AL sont prises en charge. L’extension des interfaces vous permet de créer une extension flexible et adaptable. Vous pouvez ajouter de nouvelles fonctionnalités sans modifier le système principal, ce qui vous permet de gagner du temps et d’économiser des ressources, et vous réduisez le risque d’introduire des erreurs dans la base de code existante.

Lorsque vous déclarez une interface, vous pouvez étendre une ou plusieurs interfaces existantes. La nouvelle interface hérite de toutes les méthodes des interfaces qu’elle étend. Ainsi, lorsque vous implémentez une interface qui étend d’autres interfaces, la classe ou l’objet d’implémentation doit fournir des implémentations pour toutes les méthodes définies dans les interfaces étendues, en sus des méthodes définies dans la nouvelle interface elle-même. Cela permet de s’assurer que l’implémenteur respecte le contrat spécifié par toutes les interfaces concernées.

Syntaxe

Dans l’exemple, TheImplementor peut servir à la fois d’IFoo, d’IBar et d’IFooBar. La syntaxe d’extension d’une interface est la suivante :

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 
}

Interfaces et opérateurs extensibles

Les interfaces extensibles dans AL prennent également en charge l’utilisation des opérateurs de test et de conversion is et as. L’opérateur is vous permet de vérifier si un objet implémente une interface spécifique, tandis que l’opérateur as vous permet de convertir un objet en un type d’interface spécifique. Cette fonctionnalité améliore la flexibilité et la robustesse de votre code, car elle permet une vérification et une conversion de type dynamiques. Pour en savoir plus, consultez Opérateurs de test et de conversion de type pour les interfaces.