我试图在没有一个应用程序使用的情况下存储和检索数据,这意味着当我重定向时它应该立即在另一个列表上刷新,但是我遇到了一些保存问题。如果你可以帮助我,那会很好。结构好吗?
序列化异常 键入'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));
}
答案 0 :(得分:1)
ApplicationSettings
使用DataContractSerializer
序列化。您可以自己使用它来测试对象的序列化。或者,您可以自己处理序列化(和反序列化),只需在ApplicationSettings
中存储stringe。
您的代码也远比它需要的复杂得多。您正在尝试保存单个sMedication
实例,但将其包装在List<sMedication>
中(即使只有其中一个实例),然后将其再次包装在List<object>
中,即使它只是单个对象。