Ayudantes de implementación del método Equals (C #)

Cada vez que escribo alguna clase de datos, generalmente paso mucho tiempo escribiendo la implementación IEquatable.

La última clase que escribí fue algo como:

public class Polygon
{
    public Point[] Vertices { get; set; }
}

Implementar IEquatable fue exhaustivo. Seguramente C # 3.0 / LINQ ayuda mucho, pero los vértices se pueden desplazar y / o en el orden inverso, y eso agrega mucha complejidad al método Equals. Después de muchas pruebas unitarias y la implementación correspondiente, me di por vencido y cambié mi aplicación para aceptar solo triángulos, cuya implementación de IEquatable requirió solo 11 pruebas unitarias para estar completamente cubierta.

¿Existe alguna herramienta o técnica que ayude a implementar Equals y GetHashCode?

Respuestas a la pregunta(4)

Su respuesta a la pregunta