Qual é a melhor maneira de comparar duas entidades de estrutura de entidade?

Eu quero saber a maneira mais eficiente de comparar duas entidades do mesmo tipo.

Uma entidade é criada a partir de um arquivo xml manualmente (isto é, nova instância e propriedades definidas manualmente) e a outra é retivada do contexto do meu objeto.

Eu quero saber se os valores da propriedade são os mesmos em cada instância.

Meu primeiro pensamento é gerar um hash dos valores de propriedade de cada objeto e comparar os hashes, mas pode haver outro caminho, ou um caminho embutido?

Qualquer sugestão seria bem vinda.

Muito Obrigado,

James

ATUALIZAR

Eu vim com isso:

static class ObjectComparator<T>
{
    static bool CompareProperties(T newObject, T oldObject)
    {
        if (newObject.GetType().GetProperties().Length != oldObject.GetType().GetProperties().Length)
        {
            return false;
        }
        else
        {
            var oldProperties = oldObject.GetType().GetProperties();

            foreach (PropertyInfo newProperty in newObject.GetType().GetProperties())
            {
                try
                {
                    PropertyInfo oldProperty = oldProperties.Single<PropertyInfo>(pi => pi.Name == newProperty.Name);

                    if (newProperty.GetValue(newObject, null) != oldProperty.GetValue(oldObject, null))
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }

            return true;
        }
    }
}

Eu não testei ainda, é mais um alimento para pensar para gerar mais algumas idéias do grupo.

Uma coisa que pode ser um problema é comparar as propriedades que possuem valores de entidade, se o comparador padrão comparar na referência de objeto, então nunca será verdadeiro. Uma possível correção é sobrecarregar o operador de igualdade em minhas entidades para que seja comparado com o ID da entidade.

questionAnswers(1)

yourAnswerToTheQuestion