xmlserialization在声明序列化器时停止

本文关键字:序列化 声明 xmlserialization | 更新日期: 2023-09-27 18:02:51

在我的项目中,我使用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>)。

现在我的代码:name类:
    [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);
    }
}

在main中,我在构造函数中声明了:

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

List<File>对象完全相同…

xmlserialization在声明序列化器时停止

Name在其当前定义中是不可XML序列化的。XML序列化器不能处理缺少公共无参数actor的类。因此,您基本上应该在Name中包含以下元素:

public Name()
{
}