2012-07-29 4 views
1

내 WPF 애플리케이션에서 사용자에게 제시된 양식이 있으며, 사용자는 약 폼을 채 웁니다. 장소. 이 양식 항목은 사용자 정의 클래스에서 오브젝트를 구성하는 데 사용되며 다음에 입력 한 위치에 대한 세부 사항보기가 표시됩니다.동적으로 생성 된 객체를 WPF에 저장합니다.

내가 필요로하는 것은 동적으로 생성 된 객체를 저장할 수있는 방법으로, 응용 프로그램을 닫았다가 다시 열 때 사용자가 이전에 입력 한 객체의 데이터를 다시 열 수 있도록 이전에 입력 한 객체의 name 속성을 표시 할 수 있습니다. .

.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 파일에 간단하게 추가 할 수 있다는 것을 알았지 만, 분리 된 객체로 deserialize하는 것은 문제가된다고 말한 것입니다. – BradStevenson

+0

@BradStevo 내 업데이트 된 코드를 확인하십시오. –

관련 문제