Anulando GetHashCode ()

EnEste artículo, Jon Skeet mencionó que usualmente usa este tipo de algoritmo para anularGetHashCode ().

public override int GetHashCode()
{
  unchecked // Overflow is fine, just wrap
  {
    int hash = 17;
    // Suitable nullity checks etc, of course :)
    hash = hash * 23 + Id.GetHashCode();
    return hash;
  }
}

Ahora, he intentado usar esto, pero Resharper me dice que el métodoGetHashCode () debe ser hash usando solo campos de solo lectura (aunque compila bien). ¿Cuál sería una buena práctica, porque en este momento realmente no puedo hacer que mis campos sean de solo lectura?

Intenté generar este método por Resharper, aquí está el resultado.

public override int GetHashCode()
{
  return base.GetHashCode();
}

Esto no contribuye mucho, para ser honesto ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta