public void RollbackTo(TrackableListTracker <T> tracker) { if (tracker == null) { throw new ArgumentNullException("tracker"); } for (int i = ChangeList.Count - 1; i >= 0; i--) { var item = ChangeList[i]; switch (item.Operation) { case TrackableListOperation.Insert: tracker.TrackRemove(item.Index, item.NewValue); break; case TrackableListOperation.Remove: tracker.TrackInsert(item.Index, item.OldValue); break; case TrackableListOperation.Modify: tracker.TrackModify(item.Index, item.NewValue, item.OldValue); break; case TrackableListOperation.PushFront: tracker.TrackPopFront(item.NewValue); break; case TrackableListOperation.PushBack: tracker.TrackPopBack(item.NewValue); break; case TrackableListOperation.PopFront: tracker.TrackPushFront(item.OldValue); break; case TrackableListOperation.PopBack: tracker.TrackPushBack(item.OldValue); break; } } }
public void ApplyTo(TrackableListTracker <T> tracker) { if (tracker == null) { throw new ArgumentNullException("tracker"); } foreach (var item in ChangeList) { switch (item.Operation) { case TrackableListOperation.Insert: tracker.TrackInsert(item.Index, item.NewValue); break; case TrackableListOperation.Remove: tracker.TrackRemove(item.Index, item.OldValue); break; case TrackableListOperation.Modify: tracker.TrackModify(item.Index, item.OldValue, item.NewValue); break; case TrackableListOperation.PushFront: tracker.TrackPushFront(item.NewValue); break; case TrackableListOperation.PushBack: tracker.TrackPushBack(item.NewValue); break; case TrackableListOperation.PopFront: tracker.TrackPopFront(item.OldValue); break; case TrackableListOperation.PopBack: tracker.TrackPopBack(item.OldValue); break; } } }