Для проекта, написанного на VB.net, я хочу использовать класс PropertyChangeNotifier
из эту статью, по крайней мере, я хотел бы попробовать, если она может помочь.
Поскольку исходный класс написан на C #, я попытался перевести этот класс на VB.net, но я не могу скомпилировать одну функцию, и я не знаю почему, возможно, вы можете помочь.
Исходная функция в C #:
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
PropertyChangeNotifier notifier = (PropertyChangeNotifier)d;
if (notifier.ValueChanged != null)
notifier.ValueChanged(notifier, EventArgs.Empty);
}
Мой (слегка измененный) перевод (и автоматический перевод нескольких веб-сайтов):
Private Shared Sub OnPropertyChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier
notifier = TryCast(d, PropertyChangeNotifier)
If (notifier Is Nothing) Then
Exit Sub
End If
RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
End Sub
Если я удалю RaiseEvent
, компилятор сообщает мне, что ValueChanged
является событием и не может быть вызвано напрямую, я должен использовать RaiseEvent
. Но когда я использую RaiseEvent
, компилятор сообщает мне
'уведомитель' не объявлен. Он может быть недоступен из-за уровня защиты.
Но, как вы видите, notifier
объявлен несколькими строками вверх.
RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
наRaiseEvent ValueChanged(notifier, EventArgs.Empty)
- person Anu6is   schedule 12.10.2019ValueChanged
является нестатическим событием классаPropertyChangeNotifier
. - person Nostromo   schedule 12.10.2019