我对编写 Windows 商店应用程序有点陌生。所以问题是如何将类的实例保存到 xml 或二进制文件中。我尝试了一些代码,但它不起作用。
希望有人能引导我朝着正确的方向前进。
我对编写 Windows 商店应用程序有点陌生。所以问题是如何将类的实例保存到 xml 或二进制文件中。我尝试了一些代码,但它不起作用。
希望有人能引导我朝着正确的方向前进。
您可以使用此代码序列化您的实例
/// <summary>
/// Deserializes the XML.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="xml">The XML.</param>
/// <returns>The instance</returns>
public static T DeserializeXml<T>(this String xml)
{
var bytes = Encoding.UTF8.GetBytes(xml);
using (var stream = new MemoryStream(bytes))
{
var serializer = new DataContractSerializer(typeof(T));
return (T)serializer.ReadObject(stream);
}
}
/// <summary>
/// Serializes the specified instance.
/// </summary>
/// <param name="instance">The instance.</param>
/// <returns>Xml</returns>
public static String SerializeXml(this Object instance)
{
using (var stream = new MemoryStream())
{
var serializer = new DataContractSerializer(instance.GetType());
serializer.WriteObject(stream, instance);
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
var result = "<?xml version='1.0' encoding='UTF-8' ?>";
result += reader.ReadToEnd();
return result;
}
}
}
下一步是将序列化的实例文本保存到文件中。
var filename = "instance.txt";
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists);
var content = yourInstance.SerializeXml();
await FileIO.WriteTextAsync(file, content, Windows.Storage.Streams.UnicodeEncoding.Utf8);
现在应该在您的 AppPackage-Local-Folder 中有一个名为的文件instance.txt
,其中包含序列化为 xml 的当前实例。
可以Windows.Storage
用来存储任何文件,用法类似于IO操作。MSDN
IsolatedStorage
对于 Windows Phone 应用程序与此类似。