Пошаговое руководство. Создание и реализация интерфейсов (Visual Basic)

Интерфейсы описывают характеристики свойств, методов и событий, но оставляют сведения о реализации структур или классов.

В этом пошаговом руководстве показано, как объявить и реализовать интерфейс.

Примечание.

В этом пошаговом руководстве не содержатся сведения о создании пользовательского интерфейса.

Примечание.

Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.

Определение интерфейса

  1. Откройте новый проект приложения Windows на Visual Basic.

  2. Добавьте новый модуль в проект, нажав кнопку "Добавить модуль " в меню "Проект ".

  3. Назовите новый модуль Module1.vb и нажмите кнопку "Добавить". Отображается код нового модуля.

  4. Определите интерфейс с именем TestInterface внутри Module1 , введя Interface TestInterface между Module операторами и End Module операторами, а затем нажимая клавишу ВВОД. Редактор кода отступит Interface ключевое слово и добавляет End Interface инструкцию для формирования блока кода.

  5. Определите свойство, метод и событие для интерфейса, поместив следующий код между Interface операторами:End Interface

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

Внедрение

Вы можете заметить, что синтаксис, используемый для объявления членов интерфейса, отличается от синтаксиса, используемого для объявления членов класса. Это различие отражает тот факт, что интерфейсы не могут содержать код реализации.

Реализация интерфейса

  1. Добавьте класс с именем ImplementationClass , добавив следующую инструкцию Module1в , после End Interface инструкции, но перед оператором End Module , а затем нажмите клавишу ВВОД:

    Class ImplementationClass
    

    Если вы работаете в интегрированной среде разработки, редактор кода предоставляет соответствующую End Class инструкцию при нажатии клавиши ВВОД.

  2. Добавьте следующую Implements инструкцию ImplementationClassв интерфейс, в которую реализуется класс:

    Implements TestInterface
    

    При указании отдельно от других элементов в верхней части класса или структуры оператор указывает, Implements что класс или структура реализует интерфейс.

    Если вы работаете в интегрированной среде разработки, редактор кода реализует элементы класса, необходимые TestInterface при нажатии клавиши ВВОД, и вы можете пропустить следующий шаг.

  3. Если вы не работаете в интегрированной среде разработки, необходимо реализовать все члены интерфейса MyInterface. Добавьте следующий код для ImplementationClass реализации Event1иMethod1Prop1:

    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
    

    Оператор Implements называет реализованный интерфейс и элемент интерфейса.

  4. Выполните определение Prop1 , добавив частное поле в класс, который сохранил значение свойства:

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

    Возвращает значение pval свойства get accessor.

    Return pval
    

    Задайте значение pval в методе доступа набора свойств.

    pval = value
    
  5. Завершите определение Method1 , добавив следующий код.

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

Тестирование реализации интерфейса

  1. Щелкните правой кнопкой мыши форму запуска проекта в Обозреватель решений и щелкните "Просмотреть код". В редакторе отображается класс для формы запуска. По умолчанию называется Form1форма запуска.

  2. Добавьте в класс следующее testInstanceForm1 поле:

    Dim WithEvents testInstance As TestInterface
    

    Объявляя testInstance как WithEvents, Form1 класс может обрабатывать его события.

  3. Добавьте следующий обработчик событий в Form1 класс для обработки событий, вызванных testInstance:

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Добавьте подпрограмму с именем TestForm1 в класс для тестирования класса реализации:

    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
    

    Процедура Test создает экземпляр класса, реализующего MyInterfaceего, назначает этот экземпляр testInstance полю, задает свойство и запускает метод через интерфейс.

  5. Добавьте код для вызова Test процедуры из Form1 Load процедуры формы запуска:

    Private Sub Form1_Load(ByVal sender As System.Object,
                           ByVal e As System.EventArgs) Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. Выполните процедуру Test , нажав клавишу F5. Отображается сообщение "Prop1", равное 9. После нажатия кнопки "ОК" отображается сообщение "Параметр X для метода 1 равно 5". Нажмите кнопку "ОК" и отображается сообщение "Обработчик событий поймал событие".

См. также