如何使类反序列化为不同的名称

Min*_*wth 6 .net c# xml xmlserializer

例如:

<apple />
Run Code Online (Sandbox Code Playgroud)

将序列化为一个名为"苹果"的类.但是,如果我想将该类称为"Dragon",它将不会序列化(这是有道理的).我想知道如何标记"龙",这样当XmlSerializer看到它时,它知道"龙"是一样的

M.B*_*ock 8

假设Dragon至少定义了属性和字段的超集,apple那么使用competent_tech的答案是合适的,但我认为你的问题实际上是在询问:

[System.Xml.Serialization.XmlType("apple")]
public class Dragon
Run Code Online (Sandbox Code Playgroud)

如果Dragon兼容apple,那么你可能会更好执行类型之间的显式转换.假设应用程序知道两者的定义appleDragon,这可以通过您的反序列化来实现apple流的apple对象,其属性映射到一个新的Dragon对象,然后串行化的Dragon对象.


com*_*ech 5

您可能希望将System.Xml.Serialization.XmlTypeAttribute添加到类中.

[System.Xml.Serialization.XmlType("Dragon")]
public class apple
Run Code Online (Sandbox Code Playgroud)