поднимать .net события из другого класса? - PullRequest
4 голосов
/ 15 августа 2011

можно ли вызывать общие события, содержащиеся в одном классе, из другого класса?

например:

logonclass.vb: обрабатывает логику входа и аутентифицируется в базе данных

logonmanager.vb: содержит текущую пользовательскую ссылку и некоторые события входа и таймаута

Logon.vb: форма с кнопкой отправки.

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

If VerifyEntries() Then
        Try
            privLvl = LoginClass.AttemptLogin(txtUserName.Text, txtPassword.Text)
        Catch
        End Try
        If privLvl > 0 Then
            'RaiseEvent LoginClass.UserLoggedIn()
            'RaiseEvent LoginManager.UIdisplaychange(privLvl)
            Me.Close()
        End If

    End If

Если это неправильный способ соединения вещей, дайте мне знать, чтобы я мог научиться структурировать по-другому. В моем планировании казалось, что я поднимаю много лишних повторяющихся событий из моего logonclass в мой класс loginmanager. Затем логин-менеджер должен был вызвать его снова, чтобы основная форма увидела событие изменения. Это заставило меня задуматься о том, что если я публично поделюсь событиями и смогу вызывать их откуда угодно, это уменьшит количество событий, которые мне нужны в коде, и их количество во время выполнения.

Ответы [ 2 ]

9 голосов
/ 15 августа 2011

В C # ключевое слово «событие» генерирует закрытый объект члена делегата. Таким образом, он может быть доступен только для класса, где он определен. Но вы можете выставить публичный метод, который вызовет событие, и этот метод может быть доступен извне. Я думаю, что в VB то же самое.

3 голосов
/ 16 августа 2011

Я бы создал метод Friend, который вызывает событие. Вместо этого вызовите этот метод или вызовите событие извне.

Class LoginClass

    Public Shared Event UserLoggedIn As EventHandler

    Friend Shared Sub OnUserLoggedIn(e As EventArgs)
        RaiseEvent UserLoggedIn(Me, e)
    End Sub
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...