覆盖列表(Of)。添加行为

时间:2012-03-02 09:44:10

标签: vb.net generics

我拥有这个公共财产的课程

Private _tickets As List(Of Ticket)
Public Property Ticekts() As List(Of Ticket)
    Get
        Return _tickets
    End Get
    Set(ByVal value As List(Of Ticket))
        _tickets = value
    End Set
End Property

当我调用add方法时,我必须在添加票证之前执行一些逻辑。

逻辑不是一个重要的主题,但我最终必须删除一些票,然后添加新票。

我该怎么做?

1 个答案:

答案 0 :(得分:8)

您需要按如下方式派生自己的集合:

C#版本:

public class MyList<T> : Collection<T>
{
    protected override void InsertItem(int index, T item)
    {
        // your checks here
        base.InsertItem(index, item);
    }
}

List<T>没有虚拟方法,因此您无法覆盖添加。 Collection<T>具有虚拟InsertItem,SetItem,RemoveItem和ClearItems。

VB.NET版本:

Public Class List(Of T) 
    Inherits Collection(Of T)

    Protected Overrides Sub InsertItem( index As Integer, item As T )
        'your checks here
        MyBase.InsertItem(index, item)
    End Sub

End Class