winRT DataContractSerialized
本文关键字:DataContractSerialized winRT | 更新日期: 2023-09-27 17:54:10
class AppDataManager
{
public static async Task SaveAsync<T>(T data, string fileName)
{
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName,
CreationCollisionOption.ReplaceExisting);
var stream = await file.OpenStreamForWriteAsync();
var serializer = new DataContractSerializer(typeof(T));
serializer.WriteObject(stream ,data);
await stream.FlushAsync();
}
public static async Task<T> RestoreAsync<T>(string fileName)
{
try
{
var file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
var instream = await file.OpenStreamForReadAsync();
var serializer = new DataContractSerializer(typeof(T));
return (T)serializer.ReadObject(instream);
}
catch (Exception)
{
return default(T);
}
}
}
在主页中。XAML .
private async void SaveButton_Click_1(object sender, RoutedEventArgs e)
{
data = new UserData()
{
Name = "ibraheem",
ID = 1,
phoneNumber = 799,
Course = "java"
};
await AppDataManager.SaveAsync<UserData>(data, fileName);
}
当我点击保存按钮时,它给了我一个异常
DesigningElements类型"。UserData'不能被序列化。考虑用DataContractAttribute属性标记它,并标记所有您想要用DataMemberAttribute序列化的成员属性。如果类型是集合,请考虑使用CollectionDataContractAttribute。参见Microsoft .NET框架其他支持类型的文档。
确保您的UserData
类声明类似于下面
[DataContract]
public class UserData
{
[DataMember]
public string Name { set; get; }
[DataMember]
public int ID { set; get; }
[DataMember]
public string phoneNumber { set; get; }
[DataMember]
public string Course { set; get; }
}