1

私のプロジェクトでは、List<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 に答える