是否有一种方法可以使XmlSerializer(或DataContractSerializer)序列化可观察对象的属性?

问题描述 投票:0回答:1

当我在类上运行xmlserializer时,它不会输出为嵌套的可观察集合指定的属性。我确保它是公开的,并确保它有一个setter,但是它没有被序列化。

运行xmlserializer会产生此结果:

<ArrayOfArrayOfNote>
  <ArrayOfNote>
    <Note>
     (Many Properties of Note)
    </Note>
    <Note>
     (Many Properties of Note)
    </Note>
  <ArrayOfNote>
  <ArrayOfNote>
    <Note>
     (Many Properties of Note)
    </Note>
    <Note>
     (Many Properties of Note)
    </Note>
  <ArrayOfNote>
</ArrayOfArrayOfNote>

当我期望它产生这样的东西时:

<ArrayOfArrayOfNote>
  <ArrayOfNote>
    <Title>SomeTitle</Title>
    <Note>
     (Many Properties of Note)
    </Note>
    <Note>
     (Many Properties of Note)
    </Note>
  <ArrayOfNote>
  <ArrayOfNote>
    <Title>SomeTitle</Title>
    <Note>
     (Many Properties of Note)
    </Note>
    <Note>
     (Many Properties of Note)
    </Note>
  <ArrayOfNote>
</ArrayOfArrayOfNote>

这是我用于xmlserializer的代码(我相信这不是问题)

XmlSerializer serialiser = new XmlSerializer(typeof(NoteBookList));
TextWriter writer = new StreamWriter(@"Notes.xml");
serialiser.Serialize(writer, modules);
writer.Close();

这是我所期望的未序列化的类


[Serializable]
public class NoteBook : ObservableCollection<Note>
{
    public NoteBook()
    {

    }
    public NoteBook(string title)
    {
        Title = title;
    }
    public string Title { get; set; }
}

谢谢!

c# .net wpf xml-serialization xmlserializer
1个回答
0
投票

您的Notes类需要看起来像这样:

    public class Notes
    {
        [XmlArray("ArrayOfArrayOfNote")]
        [XmlArrayItem("ArrayOfNote")]
        public NoteBook[] noteBook { get; set; } 

        public string Title { get; set; }
    }
© www.soinside.com 2019 - 2024. All rights reserved.