Minha experiência mais pertinente foi escrever código para comparar duas entidades de dados do mesmo tipo em um modelo de objeto grande em termos de propriedades. Entendi, tentei, corri como um cachorro, obviamente.
Fiquei desanimado e, durante a noite, percebi que, sem alterar a lógica, eu poderia usar o mesmo algoritmo para gerar automaticamente métodos para fazer a comparação, mas acessar estaticamente as propriedades. Não demorou muito tempo para adaptar o código para esse fim, e eu tive a capacidade de fazer uma comparação profunda de propriedades com entidades com código estático que podia ser atualizado com o clique de um botão sempre que o modelo de objeto era alterado.
O que quero dizer é: nas conversas com colegas, já que várias vezes indiquei que o uso da reflexão poderia ser para gerar automaticamente código para compilar, em vez de executar operações de tempo de execução, e isso geralmente vale a pena considerar.