代码之家  ›  专栏  ›  技术社区  ›  Robert Wagner

不带显式XmlArrayItem属性反序列化继承类型

  •  2
  • Robert Wagner  · 技术社区  · 14 年前

    <MyEntity>
        <Vehicles>
            <Car />
            <Truck />
        </Vehicles>
    </MyEntity>
    

    我要将其反序列化为以下结构:

    public class MyEntity
    {
        public Vehicle[] Vehicles { get; set; }
    }
    
    public class Vehicle {}
    public class Car : Vehicle {}
    public class Truck : Vehicle {}
    

    是否可以在不必为每种可能的车辆类型用XmlArrayItem属性修饰MyEntity.Vehicles属性的情况下执行此操作?我可能会得到新的类型的车辆,我不知道在编译时,但可以在运行时发现。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Brian Reichle    13 年前

    除了添加属性之外,我能想到的唯一方法是在MyEntity上实现IXmlSerializer并手动处理它。当然,您还需要为不同的车辆类型注册处理程序。