Поддержка динамического типа .Net 4 не дает вам полной поддержки исправления обезьян в системе CLR. Это дает вам другой способ издеваться над объектами, но, чтобы быть откровенным, текущий способ очень хорош (см. Moq: http://code.google.com/p/moq/)
С динамическими типами вы теряете intellisense, поэтому можно было бы аргументировать, что не рекомендуется динамически для насмешек.
Перехват стиля IronPython позволит вам обернуть существующий объект с вашим желаемым поведением, но он не позволит вам рассказать о структуре, исправить все объекты Foo (с этого момента и далее), поэтому метод Bar вызовет Bar2 вместо бара.
Имейте в виду, что с IronRuby и IronPython в игре есть 2 системы отдельного типа, есть базовая система типа CLR и система типа IronRuby/IronPython, когда они обращаются к C# -коду, происходит маршаллинг. Поэтому, несмотря на то, что IronRuby/IronPython может правильно обезглавить патч собственной системы типов, они не могут использовать один и тот же механизм для исправления системы типов CLR.
Если вы хотите обезьяны латания вам нужен правильный перехват и что трудно: Dynamic interception of calls in .NET
Но если имена методов были такими же, безусловно, «фиктивная» реализация в IronPython будет использоваться, так что вы можете исправить существующий код ? Это все гипертекстовое, я еще не использовал .NET 4.0. – Finglas
Если у вас есть контейнер (фабрика), который вы используете для создания экземпляра и используете его повсюду, чтобы получить новые экземпляры и подключите его, чтобы применить перехват, тогда да. Но для этого потребуется много работы. плюс с динамикой вы теряете intellisense и не можете поймать тривиальные опечатки во время компиляции –