0

我正在开发 Windows Phone 应用程序。它需要用户登录。在 Windows Phone 应用程序中登录成功后,我尝试保存当前用户会话。

IsolatedStorageSettings.ApplicationSettings用来保存当前用户会话。

这是代码

            LoginDO objLoginDO = default(LoginDO);
            if (dtbUserDetails != null)
            {
                objLoginDO = new LoginDO(dtbUserDetails.UserID,
                                         dtbUserDetails.FirstName,
                                         dtbUserDetails.LastName,
                                         dtbUserDetails.UserName,
                                         dtbUserDetails.DisplayName,
                                         Convert.ToDateTime("01/01/2010"),
                                         "","", Convert.ToDateTime(DateTime.Now),
                                         dtbUserDetails.MobileNumber,
                                         dtbUserDetails.Location);

                UserControlBaseClass u = new UserControlBaseClass();
                //PhoneApplicationService.Current.State[u.LOGIN_DO] = objLoginDO;
                IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;                    
                settings[u.LOGIN_DO] = objLoginDO;
                settings.Save();
             }

在这里,当编译器到达时出现错误settings.Save()

错误

无法序列化类型“Demo.Classes.LoginDO”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。或者,您可以确保该类型是公共的并且具有无参数的构造函数 - 然后将序列化该类型的所有公共成员,并且不需要任何属性。

我不明白为什么会出现这个错误?有人可以帮我解决这个错误吗?

4

1 回答 1

1

在应用程序设置中保存时,它使用 DataContractSerializer 来序列化您的对象,问题可能是您没有定义 DataContractSerializer 所需的无参数构造函数。只需添加一个即可解决您的问题。

于 2013-10-03T14:14:35.513 回答