Как реализована среда Moles Isolation?

Кроты это изоляционная структура, созданная Microsoft. Отличная особенность Moles заключается в том, что он может «высмеивать» статические / не виртуальные методы и запечатанные классы (что невозможно в таких средах, как Moq). Ниже приведена краткая демонстрация того, что могут делать кроты:

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);

Похоже, что Крот может изменить тело CIL таких вещей, какDateTime.Now во время выполнения. Поскольку Moles не является открытым исходным кодом, мне любопытно узнать, какой механизм Moles использует для изменения CIL методов во время выполнения. Кто-нибудь может пролить свет?

Ответы на вопрос(2)

Ваш ответ на вопрос