【发布时间】:2011-02-06 05:23:54
【问题描述】:
更新
我认为我最初发布此问题时还不够清楚。
看看这些截图。
(Link to bigger screenshot here)
注意我用红色框起来的部分。此处显示的类确实实现了INotifyPropertyChanged,但VB 编译器似乎认为声明的PropertyChanged 事件与INotifyPropertyChanged.PropertyChanged 的签名不匹配。
(Link to bigger screenshot here)
在这里,我选择了有问题的代码行。在这个和下一个屏幕截图之间,我实际上只是剪切并粘贴 完全相同的行回到文件中(即,我点击 Ctrl + X 后跟 Ctrl + V)。
(Link 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 开头的行,然后将其粘贴回去,错误就会消失。 项目构建。
有人知道这里会发生什么吗?
【问题讨论】:
-
只是想更新。我经常遇到这个错误。很多时候,当我使用剪切和粘贴移动类时,界面的事件“中断”:我同时得到一个“x 必须实现”和“y 不能实现...”。我再次剪切并粘贴,一切顺利。有时,当我使用 devXpress 的 CodeRush 工具的“将类型移动到文件”功能时,我会遇到同样的错误。有时我会遇到其他相关现象,例如一旦再次构建项目就会消失的幻像类。虫子,我告诉你 :-)
标签: vb.net compiler-construction interface compiler-errors inotifypropertychanged