Übung – Eine Schnittstelle erstellen
In dieser Übung arbeiten Sie als Entwickler für CRONUS International Ltd. Sie möchten eine Schnittstelle IAddressProvider erstellen und implementieren, die eine Methode getAddress mit einer bestimmten Signatur hat.
Aufgaben
Erstellen Sie eine Schnittstelle.
Erstellen Sie zwei Codeunits, die die Schnittstelle implementieren.
Erstellen Sie eine Seite mit einer Aktion, die die Schnittstelle testet.
Erstellen Sie eine Enumeration, um die Schnittstelleninitialisierung zu unterstützen.
Schritte
Befolgen Sie die folgenden Schritte, um diese Übung abzuschließen:
Erstellen Sie eine neue .al-Datei mit folgendem Code, der eine Schnittstelle IAddressProvider definiert, die eine Methode getAddress mit einer bestimmten Signatur hat:
interface IAddressProvider { procedure GetAddress(): Text; }Erstellen Sie zwei neue .al-Dateien, um diese zwei Codeunits zu erstellen: CompanyAddressProvider und PrivateAddressProvider. Beide Codeunits implementieren die Schnittstelle IAddressProvider und definieren jeweils eine unterschiedliche Implementierung der Methode getAddress; in diesem Fall eine einfache Variation des Adresswertes:
codeunit 65100 CompanyAddressProvider implements IAddressProvider { procedure GetAddress(): Text; begin exit('Company address \ Denmark 2800') end; }codeunit 65101 PrivateAddressProvider implements IAddressProvider { procedure GetAddress(): Text; begin exit('My Home address \ Denmark 2800') end; }Erstellen Sie eine neue .al-Datei, um eine Seite mit einer Aktion zu erstellen, die die Wahl der Adresse erfasst und basierend auf dieser Auswahl eine Implementierung der IAddressProvider-Schnittstelle:
page 65100 MyAddress { PageType = Card; ApplicationArea = All; UsageCategory = Administration; layout { area(Content) { group(GroupName) { } } } actions { area(Processing) { action(WhatsTheAddress) { ApplicationArea = All; Caption = 'What's the Address?'; ToolTip = 'Select the address.'; Image = Addresses; trigger OnAction() var iAddressProvider: Interface IAddressProvider; begin AddressproviderFactory(iAddressProvider); Message(iAddressProvider.GetAddress()); end; } action(SendToHome) { ApplicationArea = All; Image = Home; Caption = 'Send to Home.'; ToolTip = 'Set the interface implementation to Home.'; trigger OnAction() begin sendTo := sendTo::Private end; } action(SendToWork) { Image = WorkCenter; Caption = 'Send to Work.'; ToolTip = 'Set the interface implementation to Work.'; ApplicationArea = All; trigger OnAction() begin sendTo := sendTo::Company end; } } } local procedure AddressproviderFactory(var iAddressProvider: Interface IAddressProvider) var CompanyAddressProvider: Codeunit CompanyAddressProvider; PrivateAddressProvider: Codeunit PrivateAddressProvider; begin if sendTo = sendTo::Company then iAddressProvider := CompanyAddressProvider; if sendTo = sendTo::Private then iAddressProvider := PrivateAddressProvider; end; var sendTo: enum SendTo; }Erstellen Sie eine neue .al-Datei, um eine Enumeration zu erstellen, die zwei Werte enthält, Company und Private.
enum 65100 SendTo { Extensible = true; value(0; Company) { } value(1; Private) { } }Veröffentlichen Sie Ihre Erweiterung, und öffnen Sie die Seite Meine Adresse.
Wählen Sie die Aktion Nach Hause senden aus.
Wählen Sie die Aktion Wie ist die Adresse aus, und überprüfen Sie, ob das Ergebnis wie im folgenden Screenshot ist.
Wählen Sie die Aktion Zur Arbeit senden aus.
Wählen Sie die Aktion Wie ist die Adresse aus, und überprüfen Sie, ob das Ergebnis wie im folgenden Screenshot ist.


