Se il tuo oggetto eredita da MarshalByRefObject puoi usare RealProxy.
Un'altra alternativa è usare Reflection ma si può essere limitati da elementi non contrassegnati come virtuali e/o che devono utilizzare le interfacce. Puoi anche fare in modo che copi i valori, assumendo che le proprietà siano scrivibili e che il costruttore vuoto funzioni per il tuo caso.
La risposta effettiva alla domanda è no, non esiste un modo automatico per trattare un oggetto dinamico come un tipo specifico a meno che non si tratti di un'istanza di quel tipo, né esiste una funzionalità automatica per copiare i valori da una dinamica/oggetto anonimo in un'istanza di una classe denominata.
Il runtime non ha idea di cosa stia succedendo nel costruttore o di come la classe sia implementata internamente, quindi qualsiasi impianto di questo tipo distruggerebbe la sicurezza del tipo fuori dall'acqua. L'intero punto di dinamica è quello di consentire la digitazione anatra/dispatch runtime/ecc.
modifica: Se ho frainteso la domanda fammelo sapere, ma sto assumendo che tu voglia trattare un oggetto dinamico come se fosse un'istanza di SomeType.
Nei miei progetti, ho usato una classe Object Mapper per questo dove associa i nomi delle proprietà per le proprietà scrivibili e i tipi identici o coercibili, quindi almeno non ho dovuto scrivere 10.000 righe di boilerplate, sebbene la mia fonte non era dinamica, quindi ho usato Reflection.Emit/DynamicMethod per velocizzarlo notevolmente.
+1. Bel pensiero, anche se utilizza la riflessione dietro le quinte. – Tengiz
Ho pensato un po ': immagino che avrai sempre una rappresentazione intermedia quando faresti questo e avresti sempre una riflessione su entrambi i lati (oggetto anonimo e dattilografato). Quindi suppongo che per ottimizzare questo, hai solo bisogno di trovare il modulo intermedio più efficiente: http://www.servicestack.net/benchmarks/ –