В C # при использовании динамического компилятор всегда устанавливает связыватель для возврата типа объекта, а затем выполняет второе неявное динамическое преобразование в ожидаемый возвращаемый тип.Таким образом, в DynamicObject при вызове из c # GetMemberBinder.ReturnType всегда будет объектом, но, тем не менее, если вы возвращаете другой вид динамического объекта трамплина с реализованным TryConvert, вы можете получить этот тип, кроме случаев, когда пользователь делает var or dynamic
в качестве переменнойтогда у них есть прокси-сервер, который ничего не будет делать, пока он не станет статически типизированным.
ImpromptuInterface делает что-то другое, но по этим направлениям, потому что у него также есть желание иметь динамическую реализацию, котораяизменения, основанные на возвращаемых типах - просто вам нужно будет описать динамический объект через интерфейс.