내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본

DataContractSerializer 클래스

제공된 데이터 계약을 사용하여 특정 형식의 인스턴스를 XML 스트림 또는 문서로 serialize하거나 deserialize합니다. 이 클래스는 상속될 수 없습니다.

System.Object
  System.Runtime.Serialization.XmlObjectSerializer
    System.Runtime.Serialization.DataContractSerializer

네임스페이스:  System.Runtime.Serialization
어셈블리:  System.Runtime.Serialization(System.Runtime.Serialization.dll)

public sealed class DataContractSerializer : XmlObjectSerializer

DataContractSerializer 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type, IEnumerable<Type>)지정된 형식의 개체와 개체 그래프에 있을 수 있는 알려진 형식의 컬렉션을 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다.
Public 메서드Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type, DataContractSerializerSettings) DataContractSerializer 클래스의 새 인스턴스를 초기화하여 지정된 형식 및 설정의 개체를 serialize하거나 deserialize합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type, String, String)제공된 XML 루트 요소 및 네임스페이스를 사용하여 지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) XmlDictionaryString 형식의 매개 변수를 통해 지정된 XML 루트 요소 및 네임스페이스를 사용하여 지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type, String, String, IEnumerable<Type>)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 이 메서드는 두 문자열 매개 변수에 루트 XML 요소와 네임스페이스를 지정하고, 개체 그래프에 있을 수 있는 알려진 형식의 목록을 지정합니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 이 메서드는 두 개의 XmlDictionaryString 매개 변수에 루트 XML 요소와 네임스페이스를 지정하고, 개체 그래프에 있을 수 있는 알려진 형식의 목록을 지정합니다.
Public 메서드DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, serialize할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트를 지정합니다.
Public 메서드DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, serialize할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트 및 런타임에 xsi:type 선언을 매핑하기 위한 대안을 지정합니다.
Public 메서드DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, serialize할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트 및 콘텐츠가 들어 있는 XML 요소와 네임스페이스를 지정합니다.
Public 메서드DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, serialize할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트, 콘텐츠가 포함된 XML 요소와 네임스페이스를 지정하는 XmlDictionaryString의 매개 변수를 지정합니다.
Public 메서드DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, serialize할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트, 콘텐츠를 포함하는 XML 요소와 네임스페이스, 그리고 런타임에 xsi:type 선언을 매핑하기 위한 대안을 지정합니다.
Public 메서드DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)지정된 형식의 개체를 serialize하거나 deserialize하기 위해 DataContractSerializer 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, serialize할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트, 콘텐츠를 포함하는 XML 요소 및 네임스페이스를 지정하는 XmlDictionaryString 매개 변수, 그리고 런타임에 xsi:type 선언을 매핑하기 위한 대안을 지정합니다.
위쪽

  이름설명
Public 속성DataContractResolver xsi:type 선언을 알려진 계약 형식에 동적으로 매핑하는 데 사용되는 구성 요소를 가져옵니다.
Public 속성DataContractSurrogateserialization 또는 deserialization 프로세스를 확장할 수 있는 서로게이트 형식을 가져옵니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원IgnoreExtensionDataObject클래스를 serialize하거나 deserialize할 때 해당 클래스의 확장에서 제공하는 데이터를 무시할지 여부를 지정하는 값을 가져옵니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원KnownTypes DataContractSerializer 의 이 인스턴스를 사용하여 serialize된 개체 그래프에 있을 수 있는 형식의 컬렉션을 가져옵니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원MaxItemsInObjectGraph개체 그래프에서 serialize하거나 deserialize할 최대 항목 수를 가져옵니다.
Public 속성이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원PreserveObjectReferences비표준 XML 구문을 사용하여 개체 참조 데이터를 유지할지 여부를 지정하는 값을 가져옵니다.
Public 속성Windows 스토어 앱용 .NET에서 지원SerializeReadOnlyTypes읽기 전용 형식을 serialize하는지 여부를 지정하는 값을 가져옵니다.
위쪽

  이름설명
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원Equals(Object) 지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원GetHashCode기본 해시 함수로 작동합니다. (Object에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원IsStartObject(XmlDictionaryReader)deserialize할 수 있는 개체에 XmlDictionaryReader가 배치되는지 여부를 확인합니다. (XmlObjectSerializer.IsStartObject(XmlDictionaryReader)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원IsStartObject(XmlReader)deserialize할 수 있는 개체에 XmlReader가 배치되는지 여부를 확인합니다. (XmlObjectSerializer.IsStartObject(XmlReader)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원ReadObject(Stream) Stream 을 사용하여 XML 스트림 또는 문서를 읽고 deserialize된 개체를 반환합니다. (XmlObjectSerializer에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원ReadObject(XmlDictionaryReader) XmlDictionaryReader 를 사용하여 XML 문서 또는 스트림을 읽고 deserialize된 개체를 반환합니다. (XmlObjectSerializer에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원ReadObject(XmlReader) XmlReader 를 사용하여 XML 스트림을 읽고 deserialize된 개체를 반환합니다. (XmlObjectSerializer.ReadObject(XmlReader)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원ReadObject(XmlDictionaryReader, Boolean) XmlDictionaryReader 를 사용하여 XML 스트림을 읽고 deserialize된 개체를 반환하며, 값을 읽기 전에 개체 이름을 확인하는지 여부도 지정합니다. (XmlObjectSerializer.ReadObject(XmlDictionaryReader, Boolean)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원ReadObject(XmlReader, Boolean) XmlReader 를 사용하여 XML 스트림을 읽고 deserialize된 개체를 반환하며, 값을 읽기 전에 개체 이름을 확인하는지 여부도 지정합니다. (XmlObjectSerializer.ReadObject(XmlReader, Boolean)을(를) 재정의함)
Public 메서드ReadObject(XmlDictionaryReader, Boolean, DataContractResolver)XML 문서 또는 문서 스트림을 읽고 deserialize된 개체를 반환합니다. 메서드에는 확인된 개체 이름의 유효성 검사 여부를 지정하는 매개 변수와 런타임에 xsi:type 선언을 매핑하기 위한 확인자가 포함됩니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteEndObject(XmlDictionaryWriter) XmlDictionaryWriter 를 사용하여 닫기 XML 요소를 씁니다. (XmlObjectSerializer.WriteEndObject(XmlDictionaryWriter)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteEndObject(XmlWriter) XmlWriter 를 사용하여 닫기 XML 요소를 씁니다. (XmlObjectSerializer.WriteEndObject(XmlWriter)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteObject(Stream, Object)지정된 Stream을 사용하여 XML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠, 끝)를 씁니다. (XmlObjectSerializer에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteObject(XmlDictionaryWriter, Object)지정된 XmlDictionaryWriter를 사용하여 XML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠, 끝)를 씁니다. (XmlObjectSerializer에서 상속됨)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteObject(XmlWriter, Object) XmlWriter 를 사용하여 XML 문서 또는 스트림에 모든 개체 데이터(시작 XML 요소, 콘텐츠, 닫기 요소)를 씁니다. (XmlObjectSerializer.WriteObject(XmlWriter, Object)을(를) 재정의함)
Public 메서드WriteObject(XmlDictionaryWriter, Object, DataContractResolver)지정된 XmlDictionaryWriter를 사용하여 XML 문서 또는 스트림에 모든 개체 데이터(시작 XML 요소, 콘텐츠, 포함 요소)를 씁니다. 메서드에는 런타임에 xsi:type 선언을 매핑하기 위한 확인자가 포함됩니다.
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteObjectContent(XmlDictionaryWriter, Object) XmlDictionaryWriter 를 사용하여 XML 콘텐츠를 씁니다. (XmlObjectSerializer.WriteObjectContent(XmlDictionaryWriter, Object)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteObjectContent(XmlWriter, Object) XmlWriter 를 사용하여 XML 콘텐츠를 씁니다. (XmlObjectSerializer.WriteObjectContent(XmlWriter, Object)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteStartObject(XmlDictionaryWriter, Object) XmlDictionaryWriter 를 사용하여 열기 XML 요소를 씁니다. (XmlObjectSerializer.WriteStartObject(XmlDictionaryWriter, Object)을(를) 재정의함)
Public 메서드이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원WriteStartObject(XmlWriter, Object) XmlWriter 를 사용하여 열기 XML 요소를 씁니다. (XmlObjectSerializer.WriteStartObject(XmlWriter, Object)을(를) 재정의함)
위쪽

특정 형식의 인스턴스를 XML 스트림 또는 문서로 serialize하거나 deserialize하려면 DataContractSerializer 클래스를 사용합니다. 예를 들어, 이름 및 주소와 같은 주요 데이터를 포함하는 속성을 사용하여 Person이라는 형식을 만들 수 있습니다. 그런 다음 Person 클래스의 인스턴스를 만들어 조작할 수 있으며, 모든 속성 값을 나중에 검색하기 위해 XML 문서에 쓰거나 즉시 전송하기 위해 XML 스트림에 쓸 수 있습니다. 특히 DataContractSerializer를 사용하여 WCF(Windows Communication Foundation) 메시지로 보낸 데이터를 serialize하거나 deserialize할 수 있습니다. 클래스에 DataContractAttribute 특성을 적용하고 클래스 멤버에 DataMemberAttribute 특성을 적용하여 serialize되는 속성과 필드를 지정합니다.

serialize할 수 있는 형식 목록은 데이터 계약 Serializer에서 지원하는 형식을 참조하십시오.

DataContractSerializer 를 사용하려면 먼저 원하는 클래스의 인스턴스를 만들고 해당 형식을 쓰거나 읽을 적절한 개체를 만듭니다. 예를 들어, XmlDictionaryWriter의 인스턴스를 만들 수 있습니다. 그런 다음 WriteObject 메서드를 호출하여 데이터를 유지합니다. 데이터를 검색하려면 데이터 형식을 읽을 적절한 개체(예: XML 문서의 경우 XmlDictionaryReader)를 만들고 ReadObject 메서드를 호출합니다.

DataContractSerializer 사용추가 정보 Serialization 및 Deserialization을 참조하십시오.

클라이언트 응용 프로그램 구성 파일에서 <dataContractSerializer> 요소를 사용하여 데이터 계약 serializer의 형식을 설정할 수 있습니다.

Serialization 또는 Deserialization을 위한 클래스 준비

DataContractSerializer DataContractAttributeDataMemberAttribute 클래스와 함께 사용됩니다. 클래스 serialization을 준비하려면 클래스에 DataContractAttribute를 적용합니다. serialize할 데이터를 반환하는 클래스의 각 멤버에 대해 DataMemberAttribute를 적용합니다. 액세스 가능성에 상관없이 private, protected, internal, protected internal, public 등의 필드와 속성을 serialize할 수 있습니다.

예를 들어, 스키마에서 ID 속성을 사용하여 Customer를 지정하는데 이미 기존 응용 프로그램에서 Name 속성을 가진 Person 이라는 형식을 사용할 경우가 있습니다. 계약을 따르는 형식을 만들려면 먼저 클래스에 DataContractAttribute를 적용합니다. 그런 다음 serialize할 모든 필드 또는 속성에 DataMemberAttribute를 적용합니다.

참고참고

DataMemberAttribute 는 private 및 public 멤버에 모두 적용할 수 있습니다.

XML의 최종 형식은 텍스트여야 할 필요는 없습니다. DataContractSerializer 는 데이터를 XML infoset으로 작성하며, 이 형식을 사용하면 XmlReaderXmlWriter에서 인식되는 어떤 형식으로든 데이터를 작성할 수 있습니다. XmlDictionaryReader XmlDictionaryWriter 클래스는 DataContractSerializer와 함께 작동하도록 최적화되어 있으므로 이 두 클래스를 사용하여 읽고 쓰는 것이 좋습니다.

serialization 또는 deserialization이 발생하기 전에 채워야 할 필드나 속성이 있는 클래스를 만드는 경우 버전 독립적 Serialization 콜백의 설명에 따라 콜백 특성을 사용합니다.

알려진 형식 컬렉션에 추가

개체를 serialize하거나 deserialize할 때 형식은 DataContractSerializer에 "알려진" 형식이어야 합니다. 먼저 IEnumerable<T>을 구현하는 클래스 인스턴스(예: List<T>)를 만들고 알려진 형식을 컬렉션에 추가합니다. 그런 다음 IEnumerable<T>을 사용하는 오버로드 중 하나를 사용하여 DataContractSerializer의 인스턴스를 만듭니다(예: DataContractSerializer(Type, IEnumerable<Type>)).

참고참고

다른 기본 형식과 달리 DateTimeOffset 구조체는 기본적으로 알려진 형식이 아니므로 이 형식을 알려진 형식 목록에 수동으로 추가해야 합니다. 자세한 내용은데이터 계약 알려진 형식을 참조하십시오.

이후 버전과의 호환성

DataContractSerializer 는 이후 버전의 계약과 호환되도록 설계된 데이터 계약을 인식합니다. 이러한 형식은 IExtensibleDataObject 인터페이스를 구현합니다. 이 인터페이스는 ExtensionDataObject 개체를 반환하는 ExtensionData 속성을 사용합니다. 자세한 내용은 다음을 참조하십시오 이후 버전과 호환되는 데이터 계약.

부분 신뢰로 실행

deserialization 중에 대상 개체를 인스턴스화할 때 DataContractSerializer는 대상 개체의 생성자를 호출하지 않습니다. 부분 신뢰에서 액세스할 수 있고(즉, public이며 AllowPartiallyTrustedCallers 특성이 적용된 어셈블리에 속한다는 의미) 일부 보안 관련 작업을 수행하는 [DataContract] 형식을 작성할 경우 생성자가 호출되지 않는다는 것을 알고 있어야 합니다. 특히 다음과 같은 경우에 해당 기능을 사용할 수 없습니다.

  • 생성자를 internal 또는 private으로 만들거나 생성자에 LinkDemand를 추가하여 부분 신뢰 액세스를 제한하려고 시도할 경우 부분 신뢰로 deserialization을 수행하면 두 가지 방법 모두 아무런 효력이 없습니다.

  • 실행된 생성자를 가정하는 클래스를 코딩할 경우 이 클래스의 상태가 잘못된 internal 상태로 되어 악용될 수 있습니다.

다음 예제 코드에서는 DataContractSerializer에 의해 serialize되는 Person이라는 형식을 보여 줍니다. DataContractAttribute 특성은 클래스에 적용되고 DataMemberAttribute는 멤버(private 멤버 포함)에 적용되어 DataContractSerializer에 serialize할 대상을 알려 줍니다.


namespace DataContractSerializerExample
{
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Runtime.Serialization;
    using System.Xml;

    // You must apply a DataContractAttribute or SerializableAttribute
    // to a class to have it serialized by the DataContractSerializer.
    [DataContract(Name = "Customer", Namespace = "http://www.contoso.com")]
    class Person : IExtensibleDataObject
    {
        [DataMember()]
        public string FirstName;
        [DataMember]
        public string LastName;
        [DataMember()]
        public int ID;

        public Person(string newfName, string newLName, int newID)
        {
            FirstName = newfName;
            LastName = newLName;
            ID = newID;
        }

        private ExtensionDataObject extensionData_Value;

        public ExtensionDataObject ExtensionData
        {
            get
            {
                return extensionData_Value;
            }
            set
            {
                extensionData_Value = value;
            }
        }
    }

    public sealed class Test
    {
        private Test() { }

        public static void Main()
        {
            try
            {
                WriteObject("DataContractSerializerExample.xml");
                ReadObject("DataContractSerializerExample.xml");

            }

            catch (SerializationException serExc)
            {
                Console.WriteLine("Serialization Failed");
                Console.WriteLine(serExc.Message);
            }
            catch (Exception exc)
            {
                Console.WriteLine(
                "The serialization operation failed: {0} StackTrace: {1}",
                exc.Message, exc.StackTrace);
            }

            finally
            {
                Console.WriteLine("Press <Enter> to exit....");
                Console.ReadLine();
            }
        }

        public static void WriteObject(string fileName)
        {
            Console.WriteLine(
                "Creating a Person object and serializing it.");
            Person p1 = new Person("Zighetti", "Barbara", 101);
            FileStream writer = new FileStream(fileName, FileMode.Create);
            DataContractSerializer ser =
                new DataContractSerializer(typeof(Person));
            ser.WriteObject(writer, p1);
            writer.Close();
        }

        public static void ReadObject(string fileName)
        {
            Console.WriteLine("Deserializing an instance of the object.");
            FileStream fs = new FileStream(fileName,
            FileMode.Open);
            XmlDictionaryReader reader =
                XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
            DataContractSerializer ser = new DataContractSerializer(typeof(Person));

            // Deserialize the data and read it from the instance.
            Person deserializedPerson =
                (Person)ser.ReadObject(reader, true);
            reader.Close();
            fs.Close();
            Console.WriteLine(String.Format("{0} {1}, ID: {2}",
            deserializedPerson.FirstName, deserializedPerson.LastName,
            deserializedPerson.ID));
        }
    }


.NET Framework

4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

이식 가능한 클래스 라이브러리

이식 가능한 클래스 라이브러리에서 지원

Windows 스토어 앱용 .NET

Windows 8에서 지원

Windows Phone 앱용 .NET

Windows Phone 8, Silverlight 8.1에서 지원

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

이 클래스의 인스턴스는 스레드로부터 안전한 인스턴스 구현에 사용 될 때를 제외 하 고는 IDataContractSurrogate 또는 DataContractResolver.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft