2015-03-12 25 views
0

я развивающееся приложение для Windows Phone 8.0 в C#Serialization.InvalidDataContractException при сохранении объекта

мне нужно сохранить класс, который содержит список изображений: List<Image> как свойство с помощью IsolatedStorageSettings

Первый раз , приложение разбился при сохранении строки кода с System.Runtime.Serialization.InvalidDataContractException

Я следовал инструкции для сериализации объекта , но до сих пор я все еще получаю такое же исключение

Код:

Списки Класс

[DataContract] 
    public class Lists 
    { 
     [DataMember] 
     public List<Image> ImageTiles = new List<Image>(); 
    } 

Экономия:

 ImageTiles.Add(CroppedImage); 
     lists = (Lists)levels["Lists"]; 
     lists.ImageTiles = ImageTiles; 
     levels["Lists"] = lists; 
     levels.Save(); 

Что еще не хватает?

ответ

0

Вы получаете эту ошибку, потому что изображение является недопустимым типом для сериализации. Файл действительно должен быть отправлен в поток и записан в файл. Вот сайт с некоторыми учебниками по теме:

http://code.tutsplus.com/tutorials/working-with-isolated-storage-on-windows-phone-8--cms-22778

особенно полезному блок кода из статьи ниже:

private void saveGameToIsolatedStorage(string message) 
{ 
    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
    using (IsolatedStorageFileStream rawStream = isf.CreateFile("MyFile.store")) 
    { 
     StreamWriter writer = new StreamWriter(rawStream); 
     writer.WriteLine(message); // save the message 
     writer.Close(); 
    } 
    } 
} 

Больше на I/O здесь:

https://msdn.microsoft.com/en-us/library/system.io(v=vs.110).aspx

И как получить поток от изображения здесь:

Save stream as image

Таким образом, в обзоре, вот что вам нужно сделать:

1) Отправьте изображение в поток

MemoryStream ms = new MemoryStream(); 
myImage.Save(ms, ImageFormat.Jpeg); 

2) Используйте IsolatedStorageFile, чтобы сохранить поток

using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(filePath, FileMode.Create, isf)) 
    { 
     fileStream.Write(ms.ToArray(), 0, ms.Length); 
     fileStream.Close(); 
    } 
} 
+0

Где именно в коде сохраняется сохранение изображения в файл? – GabourX

+0

Подлежит уточнению. Дайте мне знать, если вам нужен более явный код –

Смежные вопросы