Ho una classe WorkflowItemSearchCriteria
le cui istanze rappresentano un insieme di valori e riferimenti che verranno utilizzati per restituire un set di risultati filtrato di elementi del flusso di lavoro in base ai criteri di ricerca specificati.
class WorkflowItemSearchCriteria
{
string ID { get; set; }
Client TargetClient { get; set; }
Person Supervisor { get; set; }
Person WorkingAttorney { get; set; }
SearchDateKind? TargetSearchDateKind { get; set; }
DateTime? FromDate { get; set; }
DateTime? ToDate { get; set; }
public override bool Equals(object obj)
{
if (!(obj is WorkflowItemSearchCriteria)) return false;
var target = (WorkflowItemSearchCriteria) obj;
if (!target.ID.Equals(this.ID)) return false;
if (target.TargetClient != this.TargetClient) return false;
if (target.Supervisor != this.Supervisor) return false;
if (target.WorkingAttorney != this.WorkingAttorney) return false;
if (!target.TargetSearchDateKind.Equals(this.TargetSearchDateKind)) return false;
if (!target.FromDate.Equals(this.FromDate)) return false;
if (!target.ToDate.Equals(this.ToDate)) return false;
return true;
}
public override int GetHashCode()
{
// According to MSDN, two objects that are equal must return the same hash code,
// but the same hash code does not mean two objects are equal. If two value
// objects are equal, then all property and field values must be equal,
// so it's sufficient to return the hash code from just ONE field or property
// because it will equal the hash code from another object that is equal to it.
return ID.GetHashCode();
}
enum SearchDateKind
{
DateCreated,
DateCompleted
}
}
Ad un certo punto, voglio confrontare due istanze di questa classe per l'uguaglianza value-wise, quindi sto sovrascrivendo Equals
come mostrato. Ho letto fonti come questo per aiutarmi, ma sento ancora che il modo in cui produco risultati in codice fragile perché i futuri sviluppatori dovrebbero ricordarsi di aggiornare il sovraccarico Equals
se ci fossero mai aggiunte a WorkflowItemSearchCriteria
.
C'è un approccio migliore a questo?