Como a estrutura de isolamento de toupeiras é implementada?

Moles é uma estrutura de isolamento criada pela Microsoft. Um recurso interessante do Moles é que ele pode "zombar" de métodos estáticos / não virtuais e de classes seladas (o que não é possível em estruturas como o Moq). Abaixo está a rápida demonstração do que a Moles pode fazer:

Assert.AreNotEqual(new DateTime(2012, 1, 1), DateTime.Now);

// MDateTime is part of Moles; the below will "override" DateTime.Now's behavior
MDateTime.NowGet = () => new DateTime(2012, 1, 1); 
Assert.AreEqual(new DateTime(2012, 1, 1), DateTime.Now);

Parece que Moles é capaz de modificar o corpo CIL de coisas comoDateTime.Now em tempo de execução. Como o Moles não é de código aberto, estou curioso para saber qual mecanismo o Moles usa para modificar o CIL dos métodos em tempo de execução. Alguém pode lançar alguma luz?

questionAnswers(2)

yourAnswerToTheQuestion