Vedi il codice qui sotto:
public virtual bool Equals(Entity other)
{
return Equals((Object)other);
}
public override bool Equals(object obj)
{
var compareTo = obj as Entity;
if (ReferenceEquals(compareTo, null))
return false;
if (ReferenceEquals(this, compareTo))
return true;
if (GetType() != compareTo.GetType())
return false;
if (!IsTransient() && !compareTo.IsTransient() && Id == compareTo.Id)
return true;
return false;
}
IEquatable.Equals
e Object.Equals
override dovrebbero restituire lo stesso risultato. Pertanto se c'è una chiamata a IEquatable.Equals
, chiama semplicemente l'override per Object.Equals
.
È un approccio standard? Sto cercando di seguire il principio del minimo stupore. In alternativa, potrei semplicemente duplicare il codice in entrambi i metodi.