我对编写一个Windows商店应用程序有点新。所以问题是如何将类的实例保存到xml或二进制文件中。我尝试了一些代码,但它无法正常工作。
希望有人能引导我朝着正确的方向前进。
答案 0 :(得分:0)
您可以使用Windows.Storage
存储任何文件,其用法类似于IO操作。 MSDN
IsolatedStorage
与此类似。
答案 1 :(得分:0)
您可以使用此代码序列化您的实例
/// <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的当前实例。