更新
我认为我最初发布这个问题时没有表述清楚。
看一下这些截图。
请注意,我用红色框起来的部分。在此处显示的类确实实现了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
有时候,在我构建项目的时候,编译器会突然表现出以上代码有问题。它会报告说
Person
类没有实现 INotifyPropertyChanged
接口,因为它没有 PropertyChanged
事件; 或者它会说 PropertyChanged
事件无法实现 INotifyPropertyChanged.PropertyChanged
接口,因为它们的签名不匹配。
这已经很奇怪了,但最奇怪的部分在于:如果我只是剪切掉以 Event PropertyChanged
开头的那行代码,然后把它粘贴回来,错误就消失了。整个项目都能成功构建。
有人知道发生了什么吗?