¿Qué es la "mejor práctica" para comparar dos instancias de un tipo de referencia?

Me encontré con esto recientemente, hasta ahora he estado felizmente anulando al operador de igualdad (==) y / oEs igual a Método para ver si dos tipos de referencias realmente contenían el mismodatos (Es decir, dos instancias diferentes que parecen iguales).

He estado usando esto aún más desde que estoy haciendo más pruebas automáticas (comparando los datos de referencia / esperados con los que devolví).

Mientras observa algunas de lasNormas de codificación en MSDN. Me encontré con unartículo Eso desaconseja eso. Ahora entiendopor qué El artículo está diciendo esto (porque no son lo mismoejemplo) pero no responde a la pregunta:

¿Cuál es la mejor manera de comparar dos tipos de referencia?Deberíamos implementarIncomparables? (También he visto mencionar que esto debería reservarse solo para los tipos de valor).¿Hay alguna interfaz que no conozco?¿Deberíamos simplemente rodar el nuestro?

Muchas gracias ^ _ ^

Actualizar

Parece que había leído mal parte de la documentación (ha sido un día largo) y he anuladoEs igual a puede ser el camino a seguir ..

Si está implementando tipos de referencia, debe considerar reemplazar el método Equals en un tipo de referencia si su tipo se parece a un tipo base, como un punto, cadena, BigNumber, etc. La mayoría de los tipos de referencia no deben sobrecargar eligualdad operador, inclusosi anulan los iguales. Sin embargo, si está implementando un tipo de referencia que pretende tener una semántica de valor, como un tipo de número complejo, debe anular el operador de igualdad.

Respuestas a la pregunta(8)

Su respuesta a la pregunta