コード例 #1
0
ファイル: Step.cs プロジェクト: MihaMarkic/sharp-redux
 public Step(int key, ReduxAction action, object state, ObjectData actionData, ObjectTreeItem actionTreeItem, ObjectData stateData, ObjectTreeItem stateTreeItem,
             DifferenceItem differenceItem, bool differenceCalculated)
 {
     Key                  = key;
     Action               = action;
     State                = state;
     ActionData           = actionData;
     ActionTreeItem       = actionTreeItem;
     StateData            = stateData;
     StateTreeItem        = stateTreeItem;
     DifferenceItem       = differenceItem;
     DifferenceCalculated = differenceCalculated;
 }
コード例 #2
0
        public static DifferenceItemContainer FromList(ListObjectTreeItem current, ListObjectTreeItem next)
        {
            List <DifferenceItem> modifications = new List <DifferenceItem>();
            var nextChildren = new List <ObjectTreeItem>(next.Children);

            foreach (var item in current.Children)
            {
                ObjectTreeItem nextItem;
                if (item != null)
                {
                    nextItem = next.Children.SingleOrDefault(i => AreKeysEqual(item, i));
                }
                else
                {
                    nextItem = next.Children.SingleOrDefault(i => Equals(i, item));
                }
                if (nextItem == null)
                {
                    modifications.Add(new DifferenceItem(item, null, DiffType.Removed));
                }
                else
                {
                    DifferenceItem differenceTree = CreateDifferenceTree(item, nextItem);
                    if (differenceTree != null && differenceTree.DiffType != DiffType.None)
                    {
                        modifications.Add(differenceTree);
                    }
                    nextChildren.Remove(nextItem);
                }
            }
            foreach (var nextItem in nextChildren)
            {
                modifications.Add(FromBranchAdded(nextItem));
            }
            if (modifications.Count > 0)
            {
                return(new DifferenceItemContainer(modifications.ToArray(), current, next, DiffType.Modified));
            }
            return(null);
        }