Я бы не назвал это утиной типизацией. Во-первых, это вообще никак не связано с системой типов. Это просто некоторое соглашение касающееся семантики определённых языковых конструкций. Во-вторых, проверка типов делается статически, а не динамически, поэтому нельзя скажем написать foreach написать по объекту типа Object, собрать, а потом в рантайме передать в это место объект класса реализующего все нужные методы… Вообщем это не duck typing.
Сегодня немного людей понимают разницу между индукцией и дедукцией, а уж что такое синтаксический сахар вообще никто не знает. Правда, эти понятия за уши притянуты, но автору спасибо за попытку.
Интересно. Как-то реализовывал ненастоящую утиную типизацию на С# c помощью динамической генерации классов, но к сожалению сейчас показать не могу.
Зато вот тут моя статья о том, кому интересно, как подобного можно добиться в Java с помощью прокси-классов.
Пользуюсь LinFu когда надо, но если честно побаиваюсь поставлять такой код заказчикам — ведь потом тем кто поддерживает придется изучать лишнюю библиотеку. Хотя с другой стороны, dependency injection использую в коммерческом коде либерально, ибо «улучшает жизнь».
Утипизация в C#