В C # 4.0 мы собираемся получить динамические типы или объекты, чей «статический тип является динамическим», согласно Андерсу. Это позволит любому разрешению вызова метода происходить во время выполнения, а не во время компиляции. Но будет ли возможность привязать динамический объект к какому-либо контракту (и, таким образом, также вернуть ему полный смысл), вместо того, чтобы разрешать любой вызов, даже если вы знаете, что он вряд ли будет действительным.
т.е. вместо просто
dynamic foo = GetSomeDynamicObject();
имеют возможность разыграть или преобразовать его, чтобы ограничить его известным контрактом, таким как
IFoo foo2 = foo.To<IFoo>;
или даже просто
IFoo foo2 = foo as IFoo;
Не могу найти ничего подобного в существующих материалах для C # 4.0, но это кажется логическим продолжением динамической парадигмы. Кто-нибудь с дополнительной информацией?