同一类中具有相同名称的虚拟事件和正常事件
本文关键字:事件 虚拟 常事件 一类 | 更新日期: 2023-09-27 18:08:13
我不是一个绝对的初学者,但这似乎超出了我的能力(或者可能我在一天结束的时候没有精力:))。下面的代码片段试图实现什么(取自这篇文章)?
public class ObservableStack<T> : Stack<T>, INotifyCollectionChanged, INotifyPropertyChanged
{
//...
protected virtual event PropertyChangedEventHandler PropertyChanged;
//...
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged
{
add { this.PropertyChanged += value; }
remove { this.PropertyChanged -= value; }
}
}
我需要把这个翻译成VB。NET,它似乎对两个PropertyChanged
事件的存在不满意。在仍然正确实现接口的情况下,需要删除哪一个?
在VB中有两种方法可以做到这一点。首先,也是最简单的,是摆脱INotifyPropertyChanged
的显式实现。将受保护的事件设置为公共事件,不要对add
/remove
块使用显式事件。
然而,碰巧ObservableCollection<T>
显式地实现了INotifyPropertyChanged
,所以这样做可能有一些很好的理由。一般来说,框架做什么我就做什么,因为从历史上看,他们的想法通常比我的好。在这种情况下,我不知道他们为什么那样做,但在最坏的情况下,它不会伤害。
事实证明你可以在VB.NET中显式地实现接口。理论上是这样。但是我试着根据这里的lovecraft示例代码做一些事情,并在恐惧和绝望中放弃了。
我认为只要定期实现接口就可以了。