2012-03-02 2 views
0

Я хав класса с этой общественной собственностьюOverride List (Of) .Add поведения

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 

Когда я вызываю метод добавления, я должен выполнить некоторую логику до добавления билета.

Логика не является важной темой, но в конечном итоге мне нужно удалить какой-либо билет перед добавлением нового.

Как я могу это сделать?

+0

Вы хотите _remove_ при вызове Добавить? Попытка запутать пользователей вашего кода? – Oded

ответ

7

Вы должны получить свою собственную коллекцию следующим образом:

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 
+2

Это хорошее решение, но эта тема говорит о VB.NET – AngeloBad

+0

И почему я получил голос? – Phil

+1

Причина, по которой вы не в тему – AngeloBad