正在使用C#
开发适用于Windows Phone 8.0的应用程序我需要使用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 :(得分:0)
您收到该错误,因为Image是序列化的无效类型。实际上,该文件需要发送到流并写入文件。这是一个网站,上面有一些关于这个主题的教程:
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
如何从图像中获取流:
因此,概述中,您需要做的是:
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();
}
}