Procedura dettagliata: creazione e implementazione di interfacce (Visual Basic)

Le interfacce descrivono le caratteristiche delle proprietà, dei metodi e degli eventi, ma i dettagli di implementazione sono definiti da strutture o classi.

Questa procedura dettagliata illustra come dichiarare e implementare un'interfaccia.

Nota

Questa procedura dettagliata non fornisce informazioni su come creare un'interfaccia utente.

Nota

I nomi o i percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.

Per definire un'interfaccia

  1. Aprire un nuovo progetto Applicazione Windows in Visual Basic.

  2. Aggiungere un nuovo modulo al progetto facendo clic su Aggiungi modulo nel menu Progetto.

  3. Assegnare un nome al nuovo modulo Module1.vb e fare clic su Aggiungi. Verrà visualizzato il codice per il nuovo modulo.

  4. Per definire un'interfaccia denominata TestInterface in Module1, digitare Interface TestInterface tra le istruzioni Module e End Module e quindi premere INVIO. L'editor di codice applica un rientro alla parola chiave Interface e aggiunge un'istruzione End Interface per formare un blocco di codice.

  5. Definire una proprietà, un metodo e un evento per l'interfaccia inserendo il codice seguente tra le istruzioni Interface e End Interface:

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

Implementazione

È possibile notare che la sintassi usata per dichiarare i membri dell'interfaccia è diversa dalla sintassi usata per dichiarare i membri della classe. Questa differenza riflette il fatto che le interfacce non possono contenere codice di implementazione.

Per implementare l'interfaccia

  1. Aggiungere una classe denominata ImplementationClass aggiungendo l'istruzione seguente a Module1, dopo l'istruzione End Interface ma prima dell'istruzione End Module e quindi premendo INVIO:

    Class ImplementationClass
    

    Se si lavora all'interno dell'ambiente di sviluppo integrato, l'editor di codice fornisce un'istruzione End Class corrispondente quando si preme INVIO.

  2. Aggiungere l'istruzione Implements seguente a ImplementationClass, che assegna un nome all'interfaccia implementata dalla classe:

    Implements TestInterface
    

    Se elencata separatamente da altri elementi all'inizio di una classe o di una struttura, l'istruzione Implements indica che la classe o la struttura implementa un'interfaccia.

    Se si lavora all'interno dell'ambiente di sviluppo integrato, l'editor di codice implementa i membri della classe richiesti da TestInterface quando si preme INVIO ed è possibile ignorare il passaggio successivo.

  3. Se non si lavora nell'ambiente di sviluppo integrato, è necessario implementare tutti i membri dell'interfaccia MyInterface. Aggiungere il codice seguente a ImplementationClass implementare Event1, Method1 e Prop1:

    Event Event1() Implements TestInterface.Event1
    
    Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
    End Sub
    
    Public Property Prop1() As Integer Implements TestInterface.Prop1
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
    

    L'istruzione Implements assegna un nome all'interfaccia e al membro dell'interfaccia da implementare.

  4. Completare la definizione di Prop1 aggiungendo un campo privato alla classe che ha archiviato il valore della proprietà:

    ' Holds the value of the property.
    Private pval As Integer
    

    Restituire il valore di pval dalla funzione di accesso get della proprietà.

    Return pval
    

    Impostare il valore di pval nella funzione di accesso get della proprietà.

    pval = value
    
  5. Completare la definizione di Method1 aggiungendo il codice seguente.

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

Per testare l'implementazione dell'interfaccia

  1. Fare clic con il pulsante destro del mouse sul modulo di avvio per il progetto in Esplora soluzioni e scegliere Visualizza codice. L'editor visualizza la classe per il modulo di avvio. Per impostazione predefinita, il modulo di avvio è denominato Form1.

  2. Aggiungere il campo testInstance seguente alla classe Form1:

    Dim WithEvents testInstance As TestInterface
    

    Dichiarando testInstance come WithEvents, la classe Form1 può gestire i relativi eventi.

  3. Aggiungere il gestore eventi seguente alla classe Form1 per gestire gli eventi generati da testInstance:

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Aggiungere una subroutine denominata Test alla classe Form1 per testare la classe di implementazione:

    Sub Test()
        '  Create an instance of the class.
        Dim T As New ImplementationClass
        ' Assign the class instance to the interface.
        ' Calls to the interface members are 
        ' executed through the class instance.
        testInstance = T
        ' Set a property.
        testInstance.Prop1 = 9
        ' Read the property.
        MsgBox("Prop1 was set to " & testInstance.Prop1)
        '  Test the method and raise an event.
        testInstance.Method1(5)
    End Sub
    

    La routine Test crea un'istanza della classe che implementa MyInterface, assegna tale istanza al campo testInstance, imposta una proprietà ed esegue un metodo tramite l'interfaccia.

  5. Aggiungere il codice per chiamare la routine Test dalla routine Form1 Load del modulo di avvio:

    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs) Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. Eseguire la routine Test premendo F5. Verrà visualizzato un messaggio che indica che la proprietà Prop1 è stato impostata su 9. Dopo aver fatto clic su OK, verrà visualizzato un messaggio che indica che il parametro X per Method1 è 5. Fare clic su OK e verrà visualizzato un messaggio che indica che il gestore eventi ha rilevato l'evento.

Vedi anche