如何将C#翻译成VB.net

如何将C#翻译成VB.net,c#,vb.net,code-conversion,C#,Vb.net,Code Conversion,对于用VB.net编写的项目,我想使用中的PropertyChangeNotifier类,至少我想尝试一下它是否有帮助 由于最初的类是用C语言编写的,我试图将这个类翻译成VB.net,但是有一个函数我无法编译,我不知道为什么,也许你可以帮我 C#中的原始功能是: 我的(稍加修改的)翻译(以及几个网站的自动翻译)是: 如果我删除RaiseEvent编译器告诉我,ValueChanged是一个事件,不能直接调用,我应该使用RaiseEvent。但是当我使用RaiseEvent时,编译器会告诉我 未声

对于用VB.net编写的项目,我想使用中的
PropertyChangeNotifier
类,至少我想尝试一下它是否有帮助

由于最初的类是用C语言编写的,我试图将这个类翻译成VB.net,但是有一个函数我无法编译,我不知道为什么,也许你可以帮我

C#中的原始功能是:

我的(稍加修改的)翻译(以及几个网站的自动翻译)是:

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

未声明“通知程序”。它可能由于其自身的原因而无法访问 保护级别


但是正如你所看到的,
通知程序
被声明了几行。

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

  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
我刚刚在类本身中添加了以下内容:

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

notifier.ValueChanged
都告诉我这是一个事件,不能直接调用。Public event ValueChanged As EventHandler'是一个事件,不能直接调用。使用“RaiseEvent”语句引发事件。if语句中的
notifier.ValueChanged
已引发该错误,只需将
RaiseEvent notifier.ValueChanged(notifier,EventArgs.Empty)
更改为
RaiseEvent ValueChanged(notifier,EventArgs.Empty)
我在一个静态函数中,
ValueChanged
事件是
PropertyChangeNotifier
类的非静态事件。哦,错过了静态。有一个免费的Visual Studio插件可以将C#翻译成VB.NET并返回。这些自动翻译只能处理简单的代码部分,它们在这里不起作用,我试过几次。你们并没有在你们的问题中发布这个细节。自我回答和那个些并没有发布,也并没有在主要问题中提到的来源有关。
Private Sub OnValueChanged(sender As Object, e As EventArgs)
    RaiseEvent ValueChanged(sender, e)
End Sub
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