Skip to content

Instantly share code, notes, and snippets.

@huseyint
Forked from jakcharlton/comaprison.cs
Created June 15, 2011 06:41
Show Gist options
  • Save huseyint/1026602 to your computer and use it in GitHub Desktop.
Save huseyint/1026602 to your computer and use it in GitHub Desktop.
Property equality comparison on two objects
// Shamelessly stolen and adapted from http://stackoverflow.com/questions/506096/comparing-object-properties-in-c
public static class Comparisons
{
public static bool PublicInstancePropertiesEqual<T>(this T self, T to, params string[] ignore) where T : class
{
if (self != null && to != null)
{
var type = typeof(T);
foreach (var propertyName in type.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance).Select(pi => pi.Name).Except(ignore))
{
var selfValue = type.GetProperty(propertyName).GetValue(self, null);
var toValue = type.GetProperty(propertyName).GetValue(to, null);
if (selfValue != toValue && (selfValue == null || !selfValue.Equals(toValue)))
return false;
}
return true;
}
return self == to;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment