2012-07-29 20 views
1

在我的WPF應用程序中,我向用戶呈現了一個表單,用戶填寫了關於例如一個位置。這些表單條目然後用於從自定義類構建對象,並在下一個視圖中顯示有關輸入位置的詳細信息。在WPF中保存動態創建的對象

我需要的是一種能夠保存動態創建的對象的方法,以便當應用程序關閉並重新打開時,我可以顯示先前輸入的對象的名稱屬性,以便用戶可以重新打開之前輸入的對象的數據。

想我可以將它們序列化成.osl文件,但只保存公共值。 所以我想那裏肯定有一個更簡單的方法

任何幫助表示讚賞!

回答

3

閱讀關於.Net Serialization

[Serializable] 
    class Person 
    { 
     public int Age { get; set; } 
     public string Name { get; set; } 
    } 
    [Serializable] 
    class Address 
    { 
     public string City { get; set; } 
    } 



static public void SerializeToXML(Person p, Address add) 
     { 
      IFormatter formatter = new BinaryFormatter(); 
      using (FileStream stream = new FileStream(@"C:\data.xml", FileMode.Create, FileAccess.Write, FileShare.None)) 
      { 
       formatter.Serialize(stream, p); 
       formatter.Serialize(stream, add); 
      } 
     } 
     static void DeserializeFromXML() 
     { 
      IFormatter formatter = new BinaryFormatter(); 
      using (FileStream stream = new FileStream(@"C:\data.xml", FileMode.Open, FileAccess.Read, FileShare.None)) 
      { 

       Person p = (Person)formatter.Deserialize(stream); 
       Address add = (Address)formatter.Deserialize(stream); 
      } 
     } 

用途:

Person p = new Person { Age = 23, Name = "Ram" }; 
      Address add = new Address { City = "Khurja,India" }; 
      SerializeToXML(p, add); 
      DeserializeFromXML(); 

這種方式可以序列化/反序列化你想要的任何東西。

+0

很好的答案,我已經完美地工作。雖然你知道是否有可能使用這種方法將多個對象保存到文件中,並能夠將它們反序列化爲單獨的對象?由於當前方法只是簡單地覆蓋每次xml文件。我知道我可以使用StreamWriter簡單地添加到XML文件,但正如我所說的反序列化回單獨的對象成爲一個問題然後。 – BradStevenson 2012-07-29 17:49:24

+0

@BradStevo查看我的更新代碼。 – 2012-07-29 18:10:43