중화사전망 - 서예자전 - C# 에서 사용자 정의 구조 또는 클래스를 직렬화하는 방법을 묻습니다.

C# 에서 사용자 정의 구조 또는 클래스를 직렬화하는 방법을 묻습니다.

C# 는 직렬화할 수 있으며 일반적으로 [바이너리 직렬화 ][SOAP 직렬화 ][XML 직렬화] 로 변환할 수 있습니다. XML 을 예로 들어 보겠습니다. 클래스를 작성하고 직렬화하고 뒤집습니다.

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 (); 이것은 단지 간단한 예일 뿐이다.