При использовании NHibernate вы определяете свои полномочия с помощью виртуальных методов, а NHibernate создаст прокси-объект, который отслеживает изменения вашего объекта.Как Moq и NHibernate автоматически создают производные типы?
В Moq каркас волшебным образом создаст производный тип из интерфейса или базового класса. например
var mock = new Mock<IFoo>();
IFoo magicFoo = mock.Object;
Это действительно здорово. Как это делают эти рамки? Используют ли они отражение, дженерики, какую-то динамическую компиляцию или что-то еще?
Я понимаю, что это проекты с открытым исходным кодом, и я мог бы прорабатывать код, но я хотел бы получить краткий ответ здесь - возможно, с альтернативами.
Если вы не против использования бета-материалов, .NET Framework 4 фактически позволяет вам вызывать компилятор во время выполнения, поэтому вы можете сгенерировать его из кода C#, а не прибегать к ilasm и т. Д. –