1

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

                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>...

4

1 回答 1

1

Name在其当前定义中不是 XML 可序列化的。XML 序列化程序无法处理缺少公共无参数 ctor 的类。因此,您基本上应该将以下 ctor 添加到Name

public Name()
{
}

希望这可以帮助。

于 2013-03-07T14:38:14.313 回答