public override bool Equals(Object o) { if (this == o) { return(true); } var t = this.GetType(); var u = o.GetType(); if (o == null || !t.IsAssignableFrom(u) || !u.IsAssignableFrom(t)) { return(false); } var id = o as Identifier; return(CompanyId.Equals(id.CompanyId) && PersonId.Equals(id.PersonId)); }