Procedura dettagliata: Creazione e implementazione di interfacce (Visual Basic)Walkthrough: Creating and Implementing Interfaces (Visual Basic)

Le interfacce descrivono le caratteristiche di proprietà, metodi ed eventi, ma lasciano i dettagli di implementazione fino a strutture o classi.Interfaces describe the characteristics of properties, methods, and events, but leave the implementation details up to structures or classes.

In questa procedura dettagliata viene illustrato come dichiarare e implementare un'interfaccia.This walkthrough demonstrates how to declare and implement an interface.

Nota

Questa procedura dettagliata non fornisce informazioni su come creare un'interfaccia utente.This walkthrough doesn't provide information about how to create a user interface.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi.The Visual Studio edition that you have and the settings that you use determine these elements. Per altre informazioni, vedere Personalizzazione dell'IDE.For more information, see Personalizing the IDE.

Per definire un'interfacciaTo define an interface

  1. Aprire un nuovo progetto Applicazione Windows in Visual Basic.Open a new Visual Basic Windows Application project.

  2. Per aggiungere un nuovo modulo al progetto, fare clic su Aggiungi modulo nel menu progetto .Add a new module to the project by clicking Add Module on the Project menu.

  3. Assegnare un nome al Module1.vb nuovo modulo e fare clic su Aggiungi.Name the new module Module1.vb and click Add. Viene visualizzato il codice per il nuovo modulo.The code for the new module is displayed.

  4. Definire un'interfaccia denominata TestInterface all' Module1 interno di Interface TestInterface digitando End Module tra le Module istruzioni e e quindi premendo INVIO.Define an interface named TestInterface within Module1 by typing Interface TestInterface between the Module and End Module statements, and then pressing ENTER. Nell' editor di codice viene rientrato il valore End Interface della Interface parola chiave e viene aggiunta un'istruzione per formare un blocco di codice.The Code Editor indents the Interface keyword and adds an End Interface statement to form a code block.

  5. Definire una proprietà, un metodo e un evento per l'interfaccia inserendo il codice seguente tra le Interface istruzioni End Interface e:Define a property, method, and event for the interface by placing the following code between the Interface and End Interface statements:

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

ImplementazioneImplementation

È possibile notare che la sintassi utilizzata per dichiarare i membri di interfaccia è diversa dalla sintassi utilizzata per dichiarare i membri della classe.You may notice that the syntax used to declare interface members is different from the syntax used to declare class members. Questa differenza riflette il fatto che le interfacce non possono contenere codice di implementazione.This difference reflects the fact that interfaces cannot contain implementation code.

Per implementare l'interfacciaTo implement the interface

  1. Aggiungere una classe denominata ImplementationClass aggiungendo l'istruzione seguente a Module1, dopo l' End Interface istruzione, ma prima dell' End Module istruzione, quindi premendo INVIO:Add a class named ImplementationClass by adding the following statement to Module1, after the End Interface statement but before the End Module statement, and then pressing ENTER:

    Class ImplementationClass
    

    Se si lavora all'interno dell'Integrated Development Environment, l' editor di codice fornisce un' End Class istruzione corrispondente quando si preme INVIO.If you are working within the integrated development environment, the Code Editor supplies a matching End Class statement when you press ENTER.

  2. Aggiungere l'istruzione Implements seguente a ImplementationClass, che denomina l'interfaccia implementata dalla classe:Add the following Implements statement to ImplementationClass, which names the interface the class implements:

    Implements TestInterface
    

    Se elencato separatamente da altri elementi all'inizio di una classe o di una struttura, Implements l'istruzione indica che la classe o la struttura implementa un'interfaccia.When listed separately from other items at the top of a class or structure, the Implements statement indicates that the class or structure implements an interface.

    Se si lavora all'interno dell'Integrated Development Environment, l' editor di codice implementa i membri della classe TestInterface richiesti da quando si preme INVIO ed è possibile ignorare il passaggio successivo.If you are working within the integrated development environment, the Code Editor implements the class members required by TestInterface when you press ENTER, and you can skip the next step.

  3. Se non si lavora all'interno del Integrated Development Environment, è necessario implementare tutti i membri dell'interfaccia MyInterface.If you are not working within the integrated development environment, you must implement all the members of the interface MyInterface. Aggiungere il codice seguente a ImplementationClass per implementare Event1, Method1e Prop1:Add the following code to ImplementationClass to implement Event1, Method1, and 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' Implements istruzione denomina l'interfaccia e il membro di interfaccia in fase di implementazione.The Implements statement names the interface and interface member being implemented.

  4. Completare la definizione di Prop1 aggiungendo un campo privato alla classe in cui è archiviato il valore della proprietà:Complete the definition of Prop1 by adding a private field to the class that stored the property value:

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

    Restituisce il valore di pval dalla funzione di accesso get della proprietà.Return the value of the pval from the property get accessor.

    Return pval
    

    Impostare il valore di pval nella funzione di accesso set di proprietà.Set the value of pval in the property set accessor.

    pval = value
    
  5. Completare la definizione di Method1 aggiungendo il codice seguente.Complete the definition of Method1 by adding the following code.

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

Per testare l'implementazione dell'interfacciaTo test the implementation of the interface

  1. Fare clic con il pulsante destro del mouse sul modulo di avvio del progetto nella Esplora soluzioni, quindi scegliere Visualizza codice.Right-click the startup form for your project in the Solution Explorer, and click View Code. Nell'editor viene visualizzata la classe per il form di avvio.The editor displays the class for your startup form. Per impostazione predefinita, viene chiamato Form1il form di avvio.By default, the startup form is called Form1.

  2. Aggiungere il campo testInstance seguente Form1 alla classe:Add the following testInstance field to the Form1 class:

    Dim WithEvents testInstance As TestInterface
    

    Dichiarando testInstance come WithEvents, la Form1 classe è in grado di gestire gli eventi.By declaring testInstance as WithEvents, the Form1 class can handle its events.

  3. Aggiungere il gestore eventi seguente alla Form1 classe per gestire gli eventi generati da: testInstanceAdd the following event handler to the Form1 class to handle events raised by testInstance:

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

    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 Test stored procedure crea un'istanza della classe che implementa MyInterface, assegna tale istanza al testInstance campo, imposta una proprietà ed esegue un metodo tramite l'interfaccia.The Test procedure creates an instance of the class that implements MyInterface, assigns that instance to the testInstance field, sets a property, and runs a method through the interface.

  5. Aggiungere il codice per chiamare Test la procedura Form1 Load dalla procedura del form di avvio:Add code to call the Test procedure from the Form1 Load procedure of your startup form:

    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 Test procedura premendo F5.Run the Test procedure by pressing F5. Viene visualizzato il messaggio "Prop1 è stato impostato su 9".The message "Prop1 was set to 9" is displayed. Dopo aver fatto clic su OK, viene visualizzato il messaggio "il parametro X per Method1 è 5".After you click OK, the message "The X parameter for Method1 is 5" is displayed. Fare clic su OK e viene visualizzato il messaggio "il gestore eventi ha rilevato l'evento".Click OK, and the message "The event handler caught the event" is displayed.

Vedere ancheSee also