在我的项目中,我使用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>
对象完全一样......
答案 0 :(得分:1)
Name
在其当前定义中不是XML可序列化的。 XML序列化程序无法处理缺少公共无参数ctor的类。所以你基本上应该将以下ctor包含在Name
:
public Name()
{
}
希望这有帮助。