【发布时间】:2011-01-24 01:46:29
【问题描述】:
WithEventsCollection - VB.NET 的最佳方法是什么?
您对下面的代码有什么意见吗(跳过Nothing 验证)?
问题是当我在我可以设置的For Each 块中获取LinkedListNode(Of Foo) 时
myNode.Value = something,这是一个处理程序泄漏...
-在这种情况下我可以覆盖 FooCollection 的 GetEnumerator 吗?
-不。 :( 原因 NotInheritable Class LinkedListNode(Of T)
Class Foo
Public Event SelectedChanged As EventHandler
End Class
Class FooCollection
Inherits LinkedList(Of Foo)
Public Event SelectedChanged As EventHandler
Protected Overloads Sub AddFirst(ByVal item As Foo)
AddHandler item.SelectedChanged, AddressOf OnSelectedChanged
MyBase.AddFirst(item)
End Sub
Protected Overloads Sub AddLast(ByVal item As Foo)
AddHandler item.SelectedChanged, AddressOf OnSelectedChanged
MyBase.AddLast(item)
End Sub
' ------------------- '
Protected Overloads Sub RemoveFirst()
RemoveHandler MyBase.First.Value.SelectedChanged, _
AddressOf OnSelectedChanged
MyBase.RemoveFirst()
End Sub
Protected Overloads Sub RemoveLast(ByVal item As Foo)
RemoveHandler MyBase.Last.Value.SelectedChanged, _
AddressOf OnSelectedChanged
MyBase.RemoveLast()
End Sub
' ------------------- '
Protected Sub OnSelectedChanged(ByVal sender As Object, ByVal e As EventArgs)
RaiseEvent SelectedChanged(sender, e)
End Sub
End Class
【问题讨论】:
标签: .net vb.net collections