Есть ли способ заставить XmlSerializer (или DataContractSerializer) сериализовать свойство наблюдаемого объекта? - PullRequest
0 голосов
/ 30 сентября 2019

Когда я запускаю xmlserializer в своем классе, он не выводит свойство, указанное для моей вложенной наблюдаемой коллекции. Я удостоверился, что это общедоступно и гарантировал, что у него есть сеттер, но он не сериализуется.

Запуск 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; }
}

Спасибо!

1 Ответ

0 голосов
/ 30 сентября 2019

Ваш класс Notes должен выглядеть следующим образом:

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

        public string Title { get; set; }
    }
...