2012-06-08 73 views
0

我試圖存儲和檢索數據時沒有一個應用程序使用,意味着它應該在另一個列表上立即刷新,當我重定向時,但我面臨着一些保存問題。如果你能幫助我,那會很好。結構是否正常?序列化異常

序列化異常 類型'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

ApplicationSettings使用DataContractSerializer序列化。您可以自己使用它來測試對象的序列化。或者,您可以自己處理序列化(和反序列化),並將其存儲在ApplicationSettings中。

你的代碼也比它需要的複雜得多。您試圖保存一個sMedication實例,但將其包裝在List<sMedication>(即使只有其中一個),然後再將其包裝在List<object>中,即使它只是一個對象。

+0

我該如何做你提供的解決方案中的任何一個,哦,因爲我正在嘗試它,將會添加更多的數據。謝謝 – CodeGuru

+0

http://www.google.com/search?hl=zh-CN&q=how+to+use+datacontractserializer –