internal bool TryAdd(MemberInfo member, object xValue, object yValue) { Debug.Assert(!this.disposed, "this.disposed"); lock (this.gate) { if (this.KeyedSubBuilders.ContainsKey(member)) { this.Add(member, xValue, yValue); return(true); } if (!this.KeyedDiffs.TryGetValue(member, out var old)) { this.Add(member, xValue, yValue); return(true); } if (old.Diffs.Count > 0) { this.Add(member, xValue, yValue); return(true); } if (EqualBy.TryGetValueEquals(xValue, old.X, this.settings, out var xEqual) && xEqual && EqualBy.TryGetValueEquals(yValue, old.Y, this.settings, out var yEqual) && yEqual) { return(false); } this.Add(member, xValue, yValue); return(true); } }
public bool TryGetValueEquals(TSource x, TSource y, MemberSettings settings, out bool equal, out TValue xv, out TValue yv) { xv = this.GetValue(x); yv = this.GetValue(y); return(EqualBy.TryGetValueEquals(xv, yv, settings, out equal)); }