XMLSerializiation在Serializer声明时停止

时间:2013-03-07 14:35:23

标签: c# xml-serialization

在我的项目中,我使用List<Name>来存储数据。 现在我想通过XMLSerialization保存List

                XmlSerializer listser = new XmlSerializer(typeof(List<Name>)); //Stops here, jumps back to screen/GUI
                FileStream liststr = new FileStream(xmlSaveFile_Dialog.FileName, FileMode.Create);
                listser.Serialize(liststr, nameslist.list);
                liststr.Close();

现在该方法只停留在XmlSerializer声明处。(没有例外!) 我之前使用完全相同的方法来序列化另一个对象(List<File>)。 这没有问题。

现在我的代码: 名称 - 类别:

    [Serializable()]
public class Name
{
    //[XmlElement("name")]
    public string name { get; set; }
    //[XmlElement("index")]
    public string index { get; set; }

    public Name(string name, string index)
    {
        this.name = name;
        this.index = index;
    }
}

名字表:

 [XmlRoot("Units")]
class Namelist
{

    [XmlArray("Unitlist")]

    [XmlArrayItem("Unit", typeof(Name))]
    public List<Name> list;

    // Constructor
    public Namelist()
    {
        list = new List<Name>();
    }

    public void AddNameData(Name item)
    {
        list.Add(item);
    }
}

在主要部分我在构造函数中声明:

nameslist = new NameList(); //this a global internal variable

List<File>对象完全一样......

1 个答案:

答案 0 :(得分:1)

Name在其当前定义中不是XML可序列化的。 XML序列化程序无法处理缺少公共无参数ctor的类。所以你基本上应该将以下ctor包含在Name

public Name()
{
}

希望这有帮助。