Реализация событий в базовом классе - PullRequest
1 голос
/ 15 ноября 2010

Рассмотрим следующие объекты:

Public MustInherit Class FileRepository

    Public MustOverride Sub SaveStringToFile(ByVal FileText As String, ByVal FilePath As String)

    Public Event FileSaved(ByRef sender As Object, ByVal EventArgs As EventArgs)

End Class

Public Class XMLFileRepository
    Inherits FileRepository

    Public Overrides Sub SaveStringToFile(ByVal FileText As String, ByVal FilePath As String)

    End Sub

    Private Sub XMLFileRepository_FileSaved(ByRef sender As Object, ByVal EventArgs As System.EventArgs) Handles Me.FileSaved

    End Sub
End Class

Я хочу, чтобы мой базовый класс вызвал событие FileSaved при имплантации SaveStringToFile после сохранения файла.Однако в VB.NET нельзя, чтобы производный класс вызывал событие базовых классов.Я полагаю, что могу трактовать XMLFileRepository_FileSaved как стандартный вызов функции, и моя реализация SaveStringToFile вызывает его напрямую, но я думаю, что я неправильно подхожу к проблеме.Любая помощь будет отличной!

1 Ответ

3 голосов
/ 15 ноября 2010

Добавьте переопределяемую подпрограмму в ваш базовый класс, которая поднимает базовые классы FileSaved-Event:

Public MustInherit Class FileRepository

    Public MustOverride Sub SaveStringToFile(ByVal FileText As String, ByVal FilePath As String)

    Public Event FileSaved(ByVal FileText As String, ByVal FilePath As String)

    Protected Overridable Sub OnFileSaved(ByVal FileText As String, ByVal FilePath As String)
        RaiseEvent FileSaved(FileText, FilePath)
    End Sub

End Class

Public Class XMLFileRepository
    Inherits FileRepository

    Public Overrides Sub SaveStringToFile(ByVal FileText As String, ByVal FilePath As String)
        MyBase.OnFileSaved(FileText, FilePath)
    End Sub

    Private Sub XMLFileRepository_FileSaved(ByVal FileText As String, ByVal FilePath As String) Handles MyBase.FileSaved

    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...