public void MergeWith(object obj) { if (!MergeHelper.IsMergeable(this, obj)) { return; } CommonTable <T> t = (CommonTable <T>)obj; // Check values foreach (KeyValuePair <string, T> item in t.Table) { if (!_htable.ContainsKey(item.Key)) { Add(item.Value); } else { T value = _htable[item.Key]; if (typeof(IMergeable).IsAssignableFrom(value.GetType())) { ((IMergeable)value).MergeWith(item.Value); } } } }
public override bool Equals(object obj) { if (obj == null) { return(false); } CommonTable <T> t = (CommonTable <T>)obj; // Check size first if (_htable.Count != t.Count) { return(false); } // Check values foreach (KeyValuePair <string, T> item1 in _htable) { // Stupid exception if not found try { T item2 = t[item1.Key]; if (!item1.Value.Equals(item2)) { return(false); } } catch { return(false); } } // No differences found return(true); }