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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…