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

Dan*_*Tao 5 vb.net compiler-construction compiler-errors interface inotifypropertychanged

更新

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

看看这些截图.

替代文字 (链接到更大的截图)

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

替代文字 (链接到更大的截图)

在这里,我选择了有问题的代码行.这和下面的截图我真的只是之间剪切和粘贴相同的一行回文件(即我打Ctrl+ X后跟Ctrl+ V).

替代文字 (链接到更大的截图)

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

这里发生了什么?


原始问题

我有时会发生这种情况,特别是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
Run Code Online (Sandbox Code Playgroud)

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

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

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

M.A*_*nin 2

该代码对我来说工作正常(Visual Studio 2008),您一定遇到了一些错误。

不管怎样,你也可以这样实现:

Public Class Person
    Implements INotifyPropertyChanged

    Public Event PropertyChanged As PropertyChangedEventHandler _
        Implements INotifyPropertyChanged.PropertyChanged

End Class
Run Code Online (Sandbox Code Playgroud)