为什么VB.NET编译器认为接口没有实现呢?

时间:2010-04-09 15:57:53

标签: vb.net compiler-construction interface compiler-errors inotifypropertychanged

更新

当我最初发布这个问题时,我认为我不够清楚。

看看这些截图。

alt textLink to bigger screenshot here

请注意我用红色装箱的部分。这里显示的类实现实现INotifyPropertyChanged,但VB编译器似乎认为声明的PropertyChanged事件与INotifyPropertyChanged.PropertyChanged的签名不匹配。

alt textLink to bigger screenshot here

这里我选择了有问题的代码行。在这个和下一个截图之间我只是剪切并粘贴 完全相同的行回到文件中(即,我点击了 Ctrl + X 后跟 Ctrl + V )。

alt textLink to bigger screenshot here

现在看哪!在切割并粘贴线后,错误就消失了。

这里发生了什么?


原始问题

我有时会发生这种情况,特别是根据我的经验使用INotifyPropertyChanged界面,但我不知道问题是否仅限于那个单一界面(这看起来很奇怪)。

假设我有一些像这样设置的代码。有一个单一事件的界面。一个类实现该接口。它包括活动。

Public Interface INotifyPropertyChanged
    Event PropertyChanged As PropertyChangedEventHandler
End Interface

Public Class Person
    Implements INotifyPropertyChanged

    Public Event PropertyChanged _
    (ByVal sender As Object, ByVal e As PropertyChangedEventArgs) _
        Implements INotifyPropertyChanged.PropertyChanged

    ' more code below '
End Class

每隔一段时间,当我构建我的项目时,编译器会突然开始表现得就像上面的代码被破坏了一样。它会报告Person类没有实现INotifyPropertyChanged,因为它没有PropertyChanged个事件;或者它会说PropertyChanged事件无法实现INotifyPropertyChanged.PropertyChanged,因为它们的签名不匹配。

这很奇怪,但这是最奇怪的部分:如果我只是剪掉以Event PropertyChanged开头的行,然后将其粘贴回来,那么错误就会消失。该项目建立。

有没有人知道这里会发生什么?

2 个答案:

答案 0 :(得分:2)

代码对我来说很好(Visual Studio 2008),你必须遇到一些错误。

无论如何,您也可以这样实现:

Public Class Person
    Implements INotifyPropertyChanged

    Public Event PropertyChanged As PropertyChangedEventHandler _
        Implements INotifyPropertyChanged.PropertyChanged

End Class

答案 1 :(得分:1)

您需要标记事件Public