예제 #1
0
        public TType Merge <TType>(TType @base, TType left, TType right)
        {
            ConflictContainer conflicts = new ConflictContainer();

            IDiff <TType> patch = this.Partial.MergeDiffs(
                this.Partial.Diff(@base, left),
                this.Partial.Diff(@base, right),
                conflicts
                );

            if (conflicts.HasConflicts)
            {
                ConflictResolver <TType> resolver = new ConflictResolver <TType>(patch, conflicts);

                this.Partial.ResolveConflicts(resolver);

                patch = resolver.Finish();
            }

            return(this.Partial.ApplyPatch(@base, patch));
        }