/// <summary> /// Returns hash code for the address object. /// </summary> /// <returns>A hash code for the address object.</returns> public override int GetHashCode() { unchecked { var hashCode = 1173891413; foreach (var addressPart in EnumHelpers.GetValues <AddressPart>()) { string addressPartValue = this[addressPart]; var partHash = addressPartValue == null ? 1873891399 : PART_COMPARER.GetHashCode(addressPartValue); hashCode = 873891391 * hashCode + partHash; } return(hashCode); } }
/// <summary> /// Check is the same address values. /// </summary> /// <param name="obj">Address to compare.</param> /// <returns>Is the same address values.</returns> public override bool Equals(object obj) { Address address = obj as Address; if (object.ReferenceEquals(address, null)) { return(false); } foreach (var addressPart in EnumHelpers.GetValues <AddressPart>()) { string addressPartValue = this[addressPart]; string addressPartToCompareValue = address[addressPart]; if (!PART_COMPARER.Equals(addressPartValue, addressPartToCompareValue)) { return(false); } } return(true); }