序列化异常

时间:2012-06-08 02:13:36

标签: silverlight windows-phone-7

我试图在没有一个应用程序使用的情况下存储和检索数据,这意味着当我重定向时它应该立即在另一个列表上刷新,但是我遇到了一些保存问题。如果你可以帮助我,那会很好。结构好吗?

序列化异常 键入'System.Collections.Generic.List`1 [[Med.sMedication,Med,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]',数据协定名称为“ArrayOfsMedication:http://schemas.datacontract”。 org / 2004/07 / MedReminder_v1'不是预期的。将任何静态未知的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。

班级档案

public class sMedication
{

    public string Name { get; set; }
    public string Remarks { get; set; }
    public string Dosage { get; set; }
    public string Duration { get; set; }
    public DateTime StartDate { get; set; }

    List<string> medicationItem = new List<string> { "", "", "", "", "" };

    public void addtoList()
    {

    }

    public object save(object bigobject)
    {
        List<Object> Obj = new List<Object>();
        Obj.Add(bigobject);

        var settings = IsolatedStorageSettings.ApplicationSettings;
        settings.Add("Obj", Obj);

        settings.Save();
        return true;
    }


}

添加代码

   private void Submit_Clicked(object sender, RoutedEventArgs e)
    {
        sMedication med = new sMedication();
        med.Name = txtName.Text;
        med.Dosage = txtDosage.Text;
        med.Duration = txtDuration.Text;
        med.StartDate = startDate.Value.Value;

        List<sMedication> medicationItem = new List<sMedication> { new sMedication { Name = med.Name, Dosage = med.Dosage } };

        //{ Name, Remarks, Dosage, Duration, Convert.ToString(StartDate) };

        med.save(medicationItem);
        NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    }

1 个答案:

答案 0 :(得分:1)

ApplicationSettings使用DataContractSerializer序列化。您可以自己使用它来测试对象的序列化。或者,您可以自己处理序列化(和反序列化),只需在ApplicationSettings中存储stringe。

您的代码也远比它需要的复杂得多。您正在尝试保存单个sMedication实例,但将其包装在List<sMedication>中(即使只有其中一个实例),然后将其再次包装在List<object>中,即使它只是单个对象。