Esercizio - Creazione di un'interfaccia
In questo esercizio, uno sviluppatore che lavora per CRONUS International Ltd. desidera creare e implementare un'interfaccia, IAddressProvider, che contiene un metodo getAddress con una certa firma.
Attività
Creare un'interfaccia.
Creare due codeunit che implementino l'interfaccia.
Creare una pagina con un'azione che testi l'interfaccia.
Creare un'enumerazione per supportare l'inizializzazione dell'interfaccia.
Passaggi
Seguire questi passaggi per completare l'esercizio:
Creare un nuovo file .al con il seguente codice che definisce un'interfaccia IAddressProvider, la quale ha un metodo getAddress con una certa firma:
interface IAddressProvider { procedure GetAddress(): Text; }Creare due nuovi file .al per creare due codeunit: CompanyAddressProvider e PrivateAddressProvider. Entrambe le codeunit implementeranno l'interfaccia IAddressProvider e ciascuna definirà un'implementazione diversa del metodo getAddress che, in questo caso, è una semplice variazione del valore dell'indirizzo:
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; }Creare un nuovo file .al per creare una pagina con un'azione che acquisisca la scelta dell'indirizzo e chiami, in base a quella scelta, un'implementazione dell'interfaccia IAddressProvider:
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; }Creare un nuovo file .al per creare un'enumerazione che contenga due valori: Azienda e Privato.
enum 65100 SendTo { Extensible = true; value(0; Company) { } value(1; Private) { } }Pubblicare l'estensione e aprire la pagina MyAddress.
Selezionare l'azione Invia a casa.
Selezionare l'azione Qual è l'indirizzo e verificare che il risultato sia simile allo screenshot seguente.
Selezionare l'azione Invia al lavoro.
Selezionare l'azione Qual è l'indirizzo e verificare che il risultato sia simile allo screenshot seguente.


