【问题标题】:winRT DataContractSerializedwinRT DataContractSerialized
【发布时间】:2013-01-18 02:32:05
【问题描述】:
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);
        }
    }
}

在 MainPage.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 序列化的成员 属性。如果类型是集合,请考虑使用 集合数据合同属性。请参阅 Microsoft .NET 框架 其他受支持类型的文档。

【问题讨论】:

  • 贴出UserData类的代码
  • 异常的消息对我来说很清楚,你必须用属性标记类和成员,因为DataContractSerializer 是选择加入,而不是选择退出(就像常规的XmlSerializer )。

标签: c# windows-8


【解决方案1】:

确保您的 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; }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 2012-04-13
  • 2012-01-10
相关资源
最近更新 更多