Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/28/09 21:38:15 (15 years ago)
Author:
swagner
Message:

Restructured interfaces and base classes (#819)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Collections/3.3/ObservableKeyedCollectionBase.cs

    r2573 r2574  
    3030namespace HeuristicLab.Collections {
    3131  [Serializable]
    32   public abstract class ObservableKeyedCollectionBase<TKey, TItem> : CollectionChangedEventsBase<TItem>, ICollection<TItem> {
     32  public abstract class ObservableKeyedCollectionBase<TKey, TItem> : IObservableKeyedCollection<TKey, TItem> {
    3333    [Storable]
    3434    private Dictionary<TKey, TItem> dict;
     
    7676      foreach (TItem item in collection)
    7777        AddItem(item);
     78    }
     79    #endregion
     80
     81    #region Destructors
     82    ~ObservableKeyedCollectionBase() {
     83      Dispose(false);
     84    }
     85    protected virtual void Dispose(bool disposing) {
     86      if (disposing) {
     87        Clear();
     88      }
     89    }
     90    public void Dispose() {
     91      Dispose(true);
     92      GC.SuppressFinalize(this);
    7893    }
    7994    #endregion
     
    232247    }
    233248    #endregion
     249
     250    #region Events
     251    [field: NonSerialized]
     252    public event CollectionItemsChangedEventHandler<TItem> ItemsAdded;
     253    protected virtual void OnItemsAdded(IEnumerable<TItem> items) {
     254      if (ItemsAdded != null)
     255        ItemsAdded(this, new CollectionItemsChangedEventArgs<TItem>(items));
     256    }
     257
     258    [field: NonSerialized]
     259    public event CollectionItemsChangedEventHandler<TItem> ItemsRemoved;
     260    protected virtual void OnItemsRemoved(IEnumerable<TItem> items) {
     261      if (ItemsRemoved != null)
     262        ItemsRemoved(this, new CollectionItemsChangedEventArgs<TItem>(items));
     263    }
     264
     265    [field: NonSerialized]
     266    public event CollectionItemsChangedEventHandler<TItem> ItemsReplaced;
     267    protected virtual void OnItemsReplaced(IEnumerable<TItem> items, IEnumerable<TItem> oldItems) {
     268      if (ItemsReplaced != null)
     269        ItemsReplaced(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems));
     270    }
     271
     272    [field: NonSerialized]
     273    public event CollectionItemsChangedEventHandler<TItem> CollectionReset;
     274    protected virtual void OnCollectionReset(IEnumerable<TItem> items, IEnumerable<TItem> oldItems) {
     275      if (CollectionReset != null)
     276        CollectionReset(this, new CollectionItemsChangedEventArgs<TItem>(items, oldItems));
     277    }
     278    #endregion
    234279  }
    235280}
Note: See TracChangeset for help on using the changeset viewer.