Если ваш объект наследуется от MarshalByRefObject, вы можете использовать RealProxy.
Другим вариантом является использование Reflection, но вы можете быть ограничены материалами, не отмеченными виртуальными и/или использующими интерфейсы. Вы также можете скопировать значения, считая, что свойства доступны для записи, и пустой конструктор работает для вашего дела.
Фактический ответ на ваш вопрос - нет, нет автоматического способа обработки динамического объекта как определенного типа, если он не является экземпляром этого типа, и нет никакого автоматического средства для копирования значений из динамического/анонимный объект в экземпляр именованного класса.
Время выполнения не имеет представления о том, что происходит в конструкторе, или о том, как класс реализован внутри, поэтому любое такое средство выведет из системы безопасность типа. Весь смысл динамического состоит в том, чтобы разрешить отправку/укладку утки/etc.
Редактировать: Если я неправильно понял вопрос, дайте мне знать, но я предполагаю, что вы хотите рассматривать динамический объект, как если бы это был экземпляр SomeType.
В моих собственных проектах я использовал класс Object Mapper для этого, где он соответствует именам свойств для доступных для записи свойств и одинаковых или принудительных типов, поэтому, по крайней мере, мне не пришлось писать 10 000 строк шаблона, хотя мой источник не был динамическим, поэтому я использовал Reflection.Emit/DynamicMethod, чтобы значительно ускорить его.
+1. Приятная мысль, хотя она использует отражение за кулисами. – Tengiz
Продумали это: я думаю, у вас всегда будет промежуточное представление, когда вы это сделаете, и у вас всегда будет отражение на обоих концах (анонимный и типизированный объект). Поэтому я думаю, чтобы оптимизировать это, вам просто нужно найти наиболее эффективную промежуточную форму: http://www.servicestack.net/benchmarks/ –