如何从 C# 转换为 VB.net



对于用 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

如果我删除编译器告诉我的RaiseEventValueChanged是一个事件,不能直接调用,我应该使用RaiseEvent.但是当我使用RaiseEvent编译器告诉我

未声明"通知程序"。它可能无法访问,因为它 保护级别。

但正如 ylou 所看到的notifier被宣布了几行。

我自己找到了解决方案。它没有解释错误消息,但至少它正在编译并希望之后可以工作。

我只是将其添加到类本身中:

Private Sub OnValueChanged(sender As Object, e As EventArgs)
RaiseEvent ValueChanged(sender, e)
End Sub

然后,我不是自己在函数OnPropertyChanged中引发事件,而是调用我的新过程:

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
notifier.OnValueChanged(notifier, EventArgs.Empty)
End Sub
Private Shared Sub OnPropertyChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
Dim notifier As PropertyChangeNotifier = CType(d, PropertyChangeNotifier)
If notifier.ValueChanged IsNot Nothing Then RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)
End Sub

相关内容

  • 没有找到相关文章

最新更新