【发布时间】:2019-10-12 07:02:27
【问题描述】:
对于一个用 VB.net 编写的项目,我想使用来自 this article 的 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' 未声明。它可能无法访问,因为它 保护等级。
但正如 ylou 所见,notifier 声明了几行。
【问题讨论】:
-
只需将
RaiseEvent notifier.ValueChanged(notifier, EventArgs.Empty)更改为RaiseEvent ValueChanged(notifier, EventArgs.Empty) -
我在一个静态函数中,
ValueChanged事件是PropertyChangeNotifier类的非静态事件。 -
哦,错过了静电。
-
有一个免费的 Visual Studio 插件可用,可以将 C# 转换为 VB.NET 并返回。
-
这些自动翻译只能处理简单的代码部分,这里不行,我试了好几个。
标签: c# vb.net code-conversion