Поддержка динамического типа в .Net 4 на самом деле не дает вам полной поддержки исправления обезьян в системе типов CLR. Это дает вам еще один способ издеваться над объектами, но, честно говоря, нынешний способ вполне хорош (см. Moq: http://code.google.com/p/moq/)
С динамическими типами вы теряете intellisense, поэтому можно привести аргумент, что он не рекомендуется динамическому для насмешек.
Перехват в стиле IronPython позволит вам обернуть существующий объект вашим собственным желаемым поведением, но не позволит вам сообщить каркасу, чтобы пропатчить все объекты Foo (начиная с этого момента), поэтому метод Bar будет вызывать Bar2 вместо бара.
Имейте в виду, что в IronRuby и IronPython есть две отдельные системы типов, есть базовая система типов CLR и система типов IronRuby / IronPython, когда они обращаются к коду C #, происходит маршалинг. Таким образом, даже несмотря на то, что IronRuby / IronPython могут корректно исправлять свою собственную систему типов, они не могут использовать тот же механизм для исправления системы типов CLR.
Если вы хотите патчить обезьяну, вам нужен правильный перехват, а это hard : Динамический перехват вызовов в .NET