If I have a dynamic object, or anonymous object for that matter, whose structure exactly matches that of a strongly typed object, is there a .NET method to build a typed object from the dynamic object?
I know I can use a LINQ dynamicList.Select(dynamic => new Typed { .... }
type thing, or I can use Automapper, but I'm wondering if there is not something specially built for this?
You could serialize to an intermediate format, just to deserialize it right thereafter. It's not the most elegant or efficient way, but it might get your job done:
Suppose this is your class:
// Typed definition class C { public string A; public int B; }
And this is your anonymous instance:
// Untyped instance var anonymous = new { A = "Some text", B = 666 };
You can serialize the anonymous version to an intermediate format and then deserialize it again to a typed version.
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var json = serializer.Serialize(anonymous); var c = serializer.Deserialize<C>(json);
Note that this is in theory possible with any serializer/deserializer (XmlSerializer, binary serialization, other json libs), as long as the roundtrip is symmetric.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With