可能重复:
如何 XML 反序列化未知类型的对象?
我刚刚开始玩序列化和反序列化。
我有一个 Person 类型的模型,只有 2 个属性(姓名和年龄),我可以序列化为 XML。说到反序列化,据我所知,我必须告诉编译器类型是 Person。对于通用 T 的世界,这似乎适得其反。我原以为我可以将对象建立为“InMemoryOnly”对象(如果您可以想象的话),该对象是在运行时创建的,它的参数/字段/属性等都是基于 XML 的。也许像匿名类型;我很欣赏 C# 编译器在设计时必须忽略这一点,并且我们会失去智能感知,但由于所有对象都以任何方式传递到内存,我不明白为什么它会在运行时失败。或者也许这可以通过反射实现?
无论如何,这就是我想要做的,从 XML 反序列化为通用对象。这可以用 C# 实现吗?
编辑刚刚发现了一个骗子,所以现在的问题是为什么 C# (.NET) 不能这样做?我知道答案可能是“因为它没有”,但我的问题是它是否可能或者比程序员的价值更麻烦?
据我所知,这样做的原因是,要完成此操作意味着序列化和反序列化必须知道类型(在本例中为 Person)。因此,如果 serailise 和反序列化发生在 WCF 上(其中序列化和序列化发生在不同的程序集中),则必须复制 Person 对象(这违反了 DRY 原则)