private static Variance DictionaryCompare <TSubTypeKey, TSubTypeValue>(Dictionary <TSubTypeKey, TSubTypeValue> set1, Dictionary <TSubTypeKey, TSubTypeValue> set2, string fieldName) { var variance = new Variance.EnumerableVariance(); foreach (var key in set1.Keys) { var subVariance = !set2.ContainsKey(key) ? new Variance.KeyedObjectRemovedVariance <TSubTypeKey>() { Prop = fieldName, key = key } : set1[key].DetailedCompare(set2[key], fieldName + "[" + key.ToString() + "]"); if (subVariance != null) { variance.variances.Add(subVariance); } } foreach (var key in set2.Keys) { if (!set1.ContainsKey(key)) { variance.variances.Add(new Variance.KeyedObjectRemovedVariance <TSubTypeKey>() { Prop = fieldName, key = key }); } } return(variance); }
private static Variance typedHomogeneousValueEnumerableCompare <T, TSubType>(T val1, T val2, string fieldName) { var variance = new Variance.EnumerableVariance(); var list1 = ((IEnumerable <TSubType>)val1).ToList(); var list2 = ((IEnumerable <TSubType>)val1).ToList(); foreach (var item in list1) { if (!list2.Contains(item)) { variance.variances.Add(new Variance.ValueRemovedVariance <TSubType>() { Prop = fieldName, value = item }); } } foreach (var item in list2) { if (!list1.Contains(item)) { variance.variances.Add(new Variance.ValueAddedVariance <TSubType>() { Prop = fieldName, value = item }); } } return(variance); }
private static Variance objectCompare <T>(T val1, T val2, string fieldName) { var variance = new Variance.EnumerableVariance() { Prop = fieldName }; List <FieldInfo> fi = val1.GetType().GetRuntimeFields().ToList <FieldInfo>(); foreach (FieldInfo f in fi) { var subVariance = f.GetValue(val1).DetailedCompare(f.GetValue(val2), f.Name); if (subVariance != null) { variance.variances.Add(subVariance); } } return(variance); }