如何避免在反序列化时为每个xml属性创建一个新类

本文关键字:创建 新类 一个 属性 xml 反序列化 何避免 | 更新日期: 2023-09-27 18:21:33

我已经采取了将xml反序列化为对象的方法,但有些节点相对较小,我觉得为其创建一个类很奇怪。让我举一个例子:

public class Plugin
{
    ...
    List<Foo> Foos{ get; set; }
    List<Bar> Bars{ get; set; }
    ...
}
[Serializable]
public class Foo
{
    [XmlText()]
    public string PluginId { get; set; }
}
[Serializable]
public class Bar
{
    [XmlAttribute("Name")]
    public string Name { get; set; }
}

这就是它在XML模式中的定义

<Plugin>
  <Foos>
    <Foo>Some Text</Foo>
    <Foo>Some More Text</Foo>
  </Foos>
  <Bars>
    <Bar Name="Some Name"/>
    <Bar Name="Some Other Name"/>
  </Bars>

我不是可以在Plugin类中为这两个字段设置一个属性吗?这样我就可以在不创建两个类的情况下实现魔术,每个类包含一个字段吗?

如何避免在反序列化时为每个xml属性创建一个新类

Foos可以

[XmlArray("Foos"), XmlArrayItem("Foo")]
public List<string> Foos {get; set;}

但是,Bar必须保留,否则无法配置属性。