Example #1
0
        protected virtual void ApplyCollectionItemRemove(ApplyingCollectionChangeBundle bundle)
        {
            var contentContentChange = bundle.ContentContentChange;
            var oldItems             = contentContentChange.OldItems;

            if (oldItems is null)
            {
                throw new ArgumentException("No old content-content-items were given although a remove collection change action has been triggered.");
            }

            var oldItemsCount = oldItems.Count;
            var oldIndex      = contentContentChange.OldIndex;

            for (var oldItemIndex = oldItemsCount - 1; oldItemIndex >= 0; oldItemIndex--)
            {
                var removeIndex = oldItemIndex + oldIndex;
#if DEBUG
                var removingContent = ContentList[removeIndex];
                var oldContent      = oldItems[oldItemIndex];

                if (!EqualityComparer.Equals(removingContent, oldContent))
                {
                    throw new Exception("Removing item is not equals old item that should be removed instead");
                }
#endif
                ItemList.RemoveAt(removeIndex);
                ContentList.RemoveAt(removeIndex);
            }
        }