2016-11-16 4 views
0

사용자 입력을 요청하는 클래스를 만들었습니다 (개별 데이터의 텍스트 상자 7 개)StreamWriter는 전체 클래스를 저장할 수 있습니까?

나중에 해당 데이터를 저장하여 StreamWriter 클래스를 사용하여 플랫 파일로 저장해야합니다.

각 필드에 대해 개별 인스턴스를 만들어야합니까?

private void btnSaveFile_Click(object sender, EventArgs e) { StreamWriter studentInfo = new StreamWriter(txtFirstName.Text); }

또는 내가 StreamWriter는 해당 클래스의 모든 필드를 인쇄 할 요청할 수있는 방법은 무엇입니까? 나는 방법의 오버로딩을 시도했지만 분명히 할 수는 없다.

+1

텍스트 상자 값을 쓰고 있으므로 모두 명시 적으로 지정하거나 양식의'TextBox' 컨트롤을 반복하여 파일에 기록해야합니다. 또 다른 방법은이 값을 객체에 바인딩하는 것입니다. 예를 들어'UserInformation'을 호출 한 다음 객체를 xml 또는 json으로 직렬화하는 것입니다. 그렇게하면 정보를로드해야 할 때 객체로 쉽게 deserialize 할 수 있습니다. 시리얼 라이저는 당신을 위해 모든 힘든 일을 할 것입니다. – PoweredByOrange

답변

1

먼저 JSON 또는 XML로 직렬화하는 경우 예, 당신의 클래스에 ToString() 방법을 추가 ... 문자열 ... 또는 간단한 방법으로 그것을 얻을 :

class Person 
    { 
      public string Name { get; set; } 
      public int Age { get; set; } 
      public Person (string name, int age) { 
       this.Name = name; 
       this.Age = age; 
      } 
      public override string ToString() 
      { 
       return "Person: " + Name + " " + Age; 

      } 

    } 

을 그리고 당신의 클래스를 작성 인스턴스는 파일에 쓰기 :

private void btnSaveFile_Click(object sender, EventArgs e) 
{ 
    string mydocpath = ""; // add your path here 
    Person newPerson = new Person ("David", 32); 
    using (StreamWriter studentInfo = new StreamWriter(mydocpath + @"\Student.txt")) { 
     studentInfo.WriteLine(newPerson.ToString()); 
    } 
} 

희망이 당신은 [Serializable] 속성을 가진 클래스를 표시 할 수 있습니다

+0

이것의 확장으로서, 당신은이 입력을 읽을 수있는 무언가를 써야하고, 시작한 양식으로 되돌릴 필요가 있습니다. 나는 실제로 ToString()을 사용하여 JSON이나 XML에 serialize하는 것을 추천한다. 그것은 훨씬 더 쉬울 것이고, 두 가지 방법으로의 전환은 모두 잘 해결 된 문제입니다. –

+0

정말 고마워요! 나는 그것에게 소용돌이를 줄 것이다! – Victor

+0

도움 주셔서 감사합니다. System.ArgumentNullException { "경로는 null이 될 수 없습니다. \ r \ n 매개 변수 이름 : 경로"} – Victor

0

하는 데 도움이됩니다. 그런 다음 BinaryFormatter을 사용하여 클래스를 스트림에 쓸 수 있습니다. 데이터가 사람이 읽을 수 있는지 여부가 중요하지 않은 경우입니다.