중화사전망 - 서예자전 - C# 에서 사용자 정의 구조 또는 클래스를 직렬화하는 방법을 묻습니다.
C# 에서 사용자 정의 구조 또는 클래스를 직렬화하는 방법을 묻습니다.
1, 콘솔 프로그램을 썼습니다.
2. 시스템 참조를 사용합니다. Xml. 직렬화 시스템을 사용하다. 유로파
3. Person 클래스에서 Address 속성이 무시되도록 정의했습니다. 직렬화되지 않으므로 XML 을 열 때 이 필드가 표시되지 않습니다.
4. 나는 서류를 써서 죽었다. D 디스크는 1234.xml 이며 변경할 수 있습니다.
= = = = = 코드 = = = = =
[직렬화 가능]
공공? 반? 사람
{
///? & lt 요약>
///? (전체 이름)
///? & lt/요약 >
공공? 문자열? 이름? {? Get? 설정; -응? }
///? & lt 요약>
///? 나이
///? & lt/요약 >
공공? Int? 나이? {? Get? 설정; -응? }
///? & lt 요약>
///? Address, 속성은 필드가 직렬화되지 않았음을 나타냅니다.
///? & lt/요약 >
[XmlIgnore]
공공? 문자열? 주소? {? Get? 설정; -응? }
} 이상은 한 과목이다. 직렬화하려면 특성 [Serializable] 을 작성해야 합니다. 다음은 내가 쓴 두 가지 방법이다.
///? & lt 요약>
///? 연재
///? & lt/요약 >
///? & ltparam? Name = "type">& lt/param & gt;;
///? & ltparam? Name = "obj">& lt/param & gt;;
정전기? 무효화? CreateSerialize (유형? 유형,? 대상? Obj)
{
XmlSerializer? Xs? =? 새 것? XmlSerializer (유형) :
시냇물? 시냇물? =? 새 것? FileStream(@"d:\ 1234. XML ",? FileMode. 생성,? 파일 액세스. 읽기 및 쓰기,? 파일 공유. 읽기 및 쓰기);
Xs. 직렬화 (흐름, obj);
시냇물. 닫기 ();
}
///? & lt 요약>
///? 역순
///? & lt/요약 >
///? & ltparam? Name = "type">& lt/param & gt;;
///? & & ltreturns & gt& lt/returns & gt;;
정전기? 대상? XMLDeserialize (형식? 유형)
{
XmlSerializer? Xs? =? 새 것? XmlSerializer (유형) :
시냇물? 시냇물? =? 새 것? FileStream(@"d:\\ 1234. XML ",? FileMode. 열어? 파일 액세스. 독서,? 파일 공유. 읽기);
Var? Str? =? Xs. 디직렬화 (흐름);
시냇물. 닫기 ();
반환? Str
} 메인 프로그램에서 Main () 의 위 메서드를 호출할 수 있습니다. 예를 들어 보겠습니다.
//여러 객체 작성
목록 & ltPerson & gt? 목록? =? 새 것? 목록 & ltPerson & gt ()
{
새 것? 퍼슨 () {? 이름? =? 장삼'? 나이? =? 18,? 주소? =? "커뮤니티 a"? },
새 것? 퍼슨 () {? 이름? =? 이사'? 나이? =? 2 1,? 주소? =? "b 커뮤니티"},
새 것? 퍼슨 () {? 이름? =? 왕오'? 나이? =? 23,? 주소? =? "커뮤니티 c"? },
새 것? 퍼슨 () {? 이름? =? 유추'? 나이? =? 17,? 주소? =? "d 커뮤니티"},
새 것? 퍼슨 () {? 이름? =? "돈"? 나이? =? 22,? 주소? =? "e 커뮤니티"},
}
Foreach? (var? Obj? 네? 목록)
{
콘솔。 WriteLine ("이름? =? " -응? +? Obj. 이름? +? \ "\tAge? =? "? +? Obj. 나이? +?" \t 주소? =? "? +? (string.isnulerempty (obj.address) "비어 있음"? :? Obj. 주소));
}
콘솔。 WriteLine ("직렬화가 시작되었습니다 ...");
Createserialize (type of (list < Person & gt),? 목록);
콘솔。 WriteLine ("직렬화 종료 ...");
콘솔。 WriteLine ("deserialize 시작 ...");
Var? DList? =? Xml deserialize (type of (list < Person & gt)? 로? 목록 & ltPerson & gt;;
Foreach? (var? Obj? 네? DList) 를 참조하십시오
{
콘솔。 WriteLine ("이름? =? " -응? +? Obj. 이름? +? \ "\tAge? =? "? +? Obj. 나이? +?" \t 주소? =? "? +? (string.isnulerempty (obj.address) "비어 있음"? :? Obj. 주소));
}
콘솔。 WriteLine ("디직렬화 종료 ...");
콘솔。 Readkey (); 이것은 단지 간단한 예일 뿐이다.