Могу ли я перенаправить события в .NET? - PullRequest
3 голосов
/ 24 февраля 2009

У меня есть класс, который перехватывает событие System.Diagnostics.DataReceivedEventArgs.

Я хочу сделать это событие доступным извне. Для этого в настоящее время я улавливаю это внутренне и поднимаю другое событие, которое кажется мне немного дублирующим.

Какой лучший способ для этого? Могу ли я связать эти события, чтобы мне не нужно было вызывать новое событие?

Вот код:

Class MyClass  

Public Event OutputDataReceived(sender As Object, e As System.Diagnostics.DataReceivedEventArgs)

Public Sub Action()
    ....
     AddHandler Process.OutputDataReceived, AddressOf ReadData
    ....
End Sub

  Private Sub ReadData(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
        RaiseEvent Me.OutputDataReceived(sender, e)
    End Sub

End Class

1 Ответ

8 голосов
/ 24 февраля 2009

Что вы подразумеваете под «ловлей» события? Одна вещь, которую вы можете сделать, это выставить свое собственное событие, которое просто передает подписки / отписки другому:

public event DataReceivedEventHandler DataReceived
{
    add
    {
        realEventSource.DataReceived += value;
    }
    remove
    {
        realEventSource.DataReceived -= value;
    }
}

Подробнее о событиях читайте в моей статье на тему - дайте мне знать, если что-то неясно.

РЕДАКТИРОВАТЬ: Вот эквивалент в VB.NET:

Public Custom Event DataReceived As DataReceivedEventHandler
    AddHandler(ByVal value As DataReceivedEventHandler)
        AddHandler Me.realEventSource.DataReceived, value
    End AddHandler
    RemoveHandler(ByVal value As DataReceivedEventHandler)
        RemoveHandler Me.realEventSource.DataReceived, value
    End RemoveHandler
    RaiseEvent(ByVal sender as Object, ByVal args as DataReceivedEventArgs)
        Throw New NotSupportedException
    End RaiseEvent
End Event
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...