私は Windows ストア アプリのプログラミングに少し慣れていないので、問題は、クラスのインスタンスを xml またはバイナリ ファイルに保存する方法です。いくつかのコードを試しましたが、機能しません。
誰かが私を正しい方向に導くことができることを願っています。
私は Windows ストア アプリのプログラミングに少し慣れていないので、問題は、クラスのインスタンスを xml またはバイナリ ファイルに保存する方法です。いくつかのコードを試しましたが、機能しません。
誰かが私を正しい方向に導くことができることを願っています。
Windows.Storage
任意のファイルを保存するために使用できます。使用法は IO 操作のようなものです。MSDN
IsolatedStorage
Windows Phone アプリの場合と同様です。
このコードを使用してインスタンスをシリアル化できます
/// <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);
instance.txt
これで、xml にシリアル化された現在のインスタンスを含むファイルが AppPackage-Local-Folder に呼び出されるはずです。