我一直使用至今的方法是使從System.Collections.ObjectModel.Collection<T>
派生的私人收藏類,並直接在覆蓋調用的方法:
class MyManagerClass
{
private class MyCollection : System.Collections.ObjectModel.Collection<object>
{
private MyManagerClass manager;
private MyCollection(MyManagerClass manager)
{
this.manager = manager;
}
protected override void InsertItem(int index, object item)
{
base.InsertItem(index, item);
manager.OnItemAddedToList(item);
}
protected override void SetItem(int index, object item)
{
object oldItem = (index < base.Count) ? base[index] : null;
base.SetItem(index, item);
if (oldItem != null) {
manager.OnItemRemovedFromList(oldItem);
}
manager.OnItemAddedToList(item);
}
protected override void RemoveItem(int index, object item)
{
base.RemoveItem(index, item);
manager.OnItemRemovedFromList(item);
}
}
private OnItemAddedToList(object o)
{
}
private OnItemRemovedFromList(object o)
{
}
}
我'不知道這是否是正確方式做到這一點,但我想看看是否有更好的選擇。
冒泡事件正是我尋找這個功能的原因。 收藏與事件良好的做法?這個想法看起來很不舒服,因爲它聽起來像MS已經實施的東西,如果它在某種程度上不壞。 – 2008-12-16 12:47:19