Typtest- und Umwandlungsoperatoren für Schnittstellen verstehen

Abgeschlossen

In der AL-Sprache können Sie Schnittstellen definieren, bei denen es sich um einen syntaktischen Vertrag handelt, der durch eine nicht abstrakte Methode implementiert werden kann. Seit Business Central 2024 Veröffentlichungszyklus 2 können Sie auch eine Schnittstelle erweitern, was ein flexibleres und anpassungsfähigeres Design ermöglicht. Weitere Informationen finden Sie unter der Schnittstellen in AL erweitern.

Im Zusammenhang mit der Erweiterbarkeit von Schnittstellen ist es nützlich, Typtests und Umwandlungen von Schnittstellen durchführen zu können. Die beiden neuen Operatoren, „is“ und „as“, wurden hinzugefügt, um diese Vorgänge zu erleichtern. Das Schlüsselwort „is“ prüft, ob eine Schnittstelle einem bestimmten Typ angehört. Das ist nützlich, um die Typsicherheit im Code zu gewährleisten. Das Schlüsselwort „as“ hingegen versucht, eine Schnittstelle in eine andere Schnittstelle umzuwandeln. Diese Operatoren verbessern die Erweiterbarkeit und Nützlichkeit der Schnittstellen in AL und entsprechen der allgemeinen Programmierpraxis, die sicherstellt, dass Systeme mit Blick auf zukünftiges Wachstum und Anpassungsfähigkeit entwickelt werden, wodurch nahtlose Aktualisierungen und Wartung ermöglicht wird.

Typprüfung mit dem „is“-Operator

Typtests mit dem „is“-Operator sind bei der Erweiterung von Schnittstellen hilfreich, da Sie damit testen können, ob eine Instanz einer Schnittstelle oder der Inhalt einer Variante eine bestimmte Schnittstelle unterstützt.

Hier die Syntax für die Verwendung des Schlüsselwortes „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;

Umwandlung mit dem „as“-Operator

Der „as“-Operator wird genutzt, um eine Instanz einer Schnittstelle in eine bestimmte Schnittstelle umzuwandeln. Es wird bei der Laufzeit ein Fehler ausgegeben, wenn die Quellschnittstelle die Zielschnittstelle nicht implementiert.

Im Folgenden finden Sie ein Beispiel:

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

Ähnlich funktioniert das Schlüsselwort „as“ mit Varianten:

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