2014-09-02 6 views
0

Я пытаюсь сериализовать мой ObservableCollection<Memos> в файле XML.XML Сериализация Windows Phone 8

Memos класс, как это:

[DataContract] 
public class Memos 
{ 
    [DataMember] 
    public string Date { get; set; } 

    [DataMember] 
    public string Event { get; set; } 

    public BitmapImage Photo { get; set; } 

    [DataMember] 
    public string Path { get; set; } 
    public Memos() { } 

    public static async Task<BitmapImage> LoadImage(StorageFile file) 
    { 
     //code 
    } 
} 

Если я оставляю Photo поле, он работает должным образом. Но я не понимаю, почему, потому что я не отмечу его атрибутом [DataMember].

Мой код выглядит следующим образом:

using (var file = storage.CreateFile("Memos.xml")) 
{ 
    var serializer = new XmlSerializer(typeof(ObservableCollection<Memos>)); 
    serializer.Serialize(file, MainPage.ListMemos); 
} 
+0

Я не думаю, что фотография является собственностью причиной ваших сериализаций вероят , это не дает вам никаких проблем в проверке Serialize. Я думаю, что вы делаете другую ошибку. –

ответ

1

Try отметить свойство с XmlIgnore, чтобы предотвратить его от сериализации:

[XmlIgnore] 
public BitmapImage Photo { get; set; } 
+0

Если мы не используем атрибуты XmlIgnore, все еще работает –

+0

Кажется, что это работает. Спасибо – Krusty

+0

@DhavalPatel сложный тип, такой как «BitmapImage», имеет небольшой шанс быть сериализуемым, а все публичные свойства включены в сериализацию, поэтому нам нужен атрибут «XmlIgnore» – har07