using System.Collections.Generic;
public static void Main() {
var ignoredProperties = new List<string> {
var variances = oldActivity.Compare(newActivity).Where(a => !ignoredProperties.Contains(a.PropertyName));
Assert.IsTrue(variances.Count() == 3);
public string PropertyName { get; set; }
public object valA { get; set; }
public object valB { get; set; }
public static class Comparision {
public static List<Variance> Compare<T>(this T val1, T val2) {
var variances = new List<Variance>();
var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in properties) {
PropertyName = property.Name,
valA = property.GetValue(val1),
valB = property.GetValue(val2)
if (v.valA == null && v.valB == null) {
(v.valA == null && v.valB != null)
(v.valA != null && v.valB == null)
if (!v.valA.Equals(v.valB)) {