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

时间:2014-09-11 11:06:10

标签: c# xml serialization

我采用了将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>

我是否可以在这两个字段的插件类中设置一个属性,让我可以在不创建包含每个字段的2个类的情况下进行魔术?

1 个答案:

答案 0 :(得分:1)

Foos可以

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

Bar必须保留 - 否则您无法配置该属性。