Compare o conteúdo de dois objetos para igualdade

Eu tenho dois objetos complexos (ou seja, objetos com string, int, double, List e outro tipo de dados caseiro) do mesmo tipo. Gostaria de comparar o conteúdo de ambos para garantir que eles sejam idênticos. Nota: O objeto não implementa .Equals (não tenho controle sobre isso) e não implementa IComparable.

Existe uma maneira genérica (reflexão?) Para comparar o conteúdo dos dois objetos?

Obrigado!