¿Hay una mejor manera de implementar Equals para objetos con muchos campos?
Tengo muchos objetos de transferencia de datos (DTO) que contiene cada unomuchos campos simples. Necesito implementar Equals en todos ellos (para poder escribir algunas pruebas unitarias en el transporte de ellos var WCF).
El código que estoy usando es:
public override bool Equals(object rhs)
{
RequestArguments other = rhs as RequestArguments;
return
other != null &&
other.m_RequestId.Equals(RequestId) &&
other.m_Type.Equals(m_Type) &&
other.m_Parameters.Equals(m_Parameters) &&
other.m_user.Equals(m_user);
}
¡Tiene que haber una mejor manera!... (listar todos los campos es más bien pedir errores y problemas de mantenimiento)
P.ej. tenemos objeto. MemberwiseClone () para ayudar con el caso Cloning (), pero no puedo encontrar nada para ayudar con Equals. Estamos funcionando con plena confianza, por lo que una solución basada en la reflexión es una respuesta, pero prefiero no reinventar la rueda.
(Lo siento, no generamos el DTO desde un lenguaje específico del dominio, de lo contrario, ¡este tipo de cosas sería fácil! Además, no puedo cambiar el sistema de compilación para agregar otro paso)