public override int GetHashCode() { var hash = 27; foreach (var property in GetType().GetProperties()) { hash = (hash * 7) + property.GetValue(this, null).GetHashCode(); } return hash; }