DataContractSerializer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
제공된 데이터 계약을 사용하여 형식의 인스턴스를 XML 스트림 또는 문서로 직렬화하고 역직렬화합니다. 이 클래스는 상속할 수 없습니다.
public ref class DataContractSerializer sealed : System::Runtime::Serialization::XmlObjectSerializer
public sealed class DataContractSerializer : System.Runtime.Serialization.XmlObjectSerializer
type DataContractSerializer = class
inherit XmlObjectSerializer
Public NotInheritable Class DataContractSerializer
Inherits XmlObjectSerializer
- 상속
설명
클래스를 DataContractSerializer 사용하여 형식의 인스턴스를 XML 스트림 또는 문서로 직렬화하고 역직렬화합니다. 예를 들어 이름 및 주소와 같은 필수 데이터가 포함된 속성으로 명명 Person 된 형식을 만들 수 있습니다. 그런 다음 클래스의 Person 인스턴스를 만들고 조작하고 나중에 검색할 수 있는 XML 문서 또는 즉시 전송을 위해 XML 스트림에서 모든 속성 값을 작성할 수 있습니다. 가장 중요한 DataContractSerializer 것은 WCF(Windows Communication Foundation) 메시지에서 보낸 데이터를 직렬화하고 역직렬화하는 데 사용됩니다. 클래스에 DataContractAttribute 특성을 적용하고 DataMemberAttribute 클래스 멤버에 특성을 적용하여 serialize되는 속성과 필드를 지정합니다.
serialize할 수 있는 형식 목록은 데이터 계약 직렬 변환기에서 지원하는 형식을 참조하세요.
DataContractSerializer를 사용하려면 먼저 형식에 맞는 클래스의 인스턴스와 개체(예: XmlDictionaryWriter의 인스턴스)를 만듭니다. 그런 다음, 메서드를 WriteObject 호출하여 데이터를 유지합니다. 데이터를 검색하려면 데이터 형식(예: XML 문서용)을 읽는 데 적합한 개체를 XmlDictionaryReader 만들고 메서드를 호출합니다 ReadObject .
사용 DataContractSerializer방법에 대한 자세한 내용은 Serialization 및 Deserialization을 참조하세요.
클라이언트 애플리케이션 구성 파일에서 dataContractSerializer 요소를 사용하여< 데이터 계약 직렬 변환기의> 형식을 설정할 수 있습니다.
직렬화 또는 역직렬화를 위한 클래스 준비
DataContractSerializer는 DataContractAttribute 및 DataMemberAttribute 클래스와 결합하여 사용됩니다. serialization을 위해 클래스를 준비하려면 클래스에 DataContractAttribute 적용합니다. 직렬화하고자 하는 데이터를 반환하는 클래스의 각 멤버에 대해 DataMemberAttribute를 적용합니다. 접근성에 관계없이 필드와 속성을 private, protected, internal, protected internal 또는 public으로 직렬화할 수 있습니다.
예를 들어, 여러분의 스키마는 Customer에 ID 속성을 지정하지만, 여러분은 이미 Person 속성을 가진 Name라는 형식을 사용하는 기존 애플리케이션을 가지고 있습니다. 계약을 준수하는 형식을 만들려면 먼저 클래스에 DataContractAttribute 적용합니다. 그런 다음 DataMemberAttribute를 직렬화하려는 모든 필드 또는 속성에 적용합니다.
Note
프라이빗 및 퍼블릭 멤버 모두에 DataMemberAttribute 적용할 수 있습니다.
XML의 최종 형식은 텍스트일 필요가 없습니다. 대신 DataContractSerializer에서 데이터를 XML 정보 세트로 작성하여 XmlReader 및 XmlWriter에서 인식하는 모든 형식으로 데이터를 쓸 수 있습니다. `XmlDictionaryReader 및 XmlDictionaryWriter 클래스를 사용하여 읽고 쓰는 것이 추천됩니다. 둘 다 DataContractSerializer와 함께 작동하도록 최적화되어 있기 때문입니다.`
직렬화 또는 역직렬화가 발생하기 전에 채워야 하는 필드 또는 속성이 있는 클래스를 만드는 경우 Version-Tolerant 직렬화 콜백에 설명된 대로 콜백 속성을 사용하십시오.
알려진 형식의 컬렉션에 추가
개체를 직렬화하거나 역직렬화할 때는 형식이 "알려진" 형식이 되도록 해야 합니다 DataContractSerializer. 먼저 구현 IEnumerable<T> 하는 클래스의 인스턴스(예: List<T>)를 만들고 알려진 형식을 컬렉션에 추가합니다. 그런 다음, DataContractSerializer를 사용하는 오버로드 중 하나로 IEnumerable<T>의 인스턴스를 생성하세요 (예: DataContractSerializer(Type, IEnumerable<Type>)).
Note
다른 기본 형식 DateTimeOffset 과 달리 구조체는 기본적으로 알려진 형식이 아니므로 알려진 형식 목록에 수동으로 추가해야 합니다( 데이터 계약 알려진 형식 참조).
전방 호환성
이후 DataContractSerializer 버전의 계약과 호환되도록 설계된 데이터 계약을 이해합니다. 이러한 형식은 인터페이스를 구현합니다 IExtensibleDataObject . 인터페이스는 ExtensionData 속성을 가지고 있으며, ExtensionDataObject 개체를 반환합니다. 자세한 내용은 Forward-Compatible 데이터 계약을 참조하세요.
생성자
| Name | Description |
|---|---|
| DataContractSerializer(Type, DataContractSerializerSettings) |
지정된 형식 및 설정의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식 목록, 직렬화할 최대 그래프 항목 수, 예기치 않은 데이터를 무시하는 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트 및 런타임에 매핑 |
| DataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식 목록, 직렬화할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에 개체 참조 데이터를 유지할지 여부 및 사용자 지정 serialization을 위한 서로게이트를 지정합니다. |
| DataContractSerializer(Type, IEnumerable<Type>) |
지정된 형식의 DataContractSerializer 개체와 개체 그래프에 있을 수 있는 알려진 형식의 컬렉션을 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식 목록, 직렬화할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization을 위한 서로게이트, 콘텐츠를 포함하는 XML 요소 및 네임스페이스도 지정합니다. 런타임에 매핑 |
| DataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식의 목록, 직렬화할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프의 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization의 서로게이트 및 콘텐츠를 포함하는 XML 요소 및 네임스페이스를 지정합니다. |
| DataContractSerializer(Type, String, String, IEnumerable<Type>) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 두 문자열 매개 변수의 루트 XML 요소와 네임스페이스뿐만 아니라 개체 그래프에 있을 수 있는 알려진 형식 목록을 지정합니다. |
| DataContractSerializer(Type, String, String) |
제공된 XML 루트 요소 및 네임스페이 DataContractSerializer 스를 사용하여 지정된 형식의 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식 목록, 직렬화할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프의 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization에 대한 서로게이트, 콘텐츠를 포함하는 XML 요소 및 네임스페이스를 지정하는 매개 변수 XmlDictionaryString 를 지정합니다. 런타임에 매핑 |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 개체 그래프에 있을 수 있는 알려진 형식 목록, 직렬화할 최대 그래프 항목 수, 예기치 않은 데이터를 무시할 매개 변수, 비표준 XML 구문을 사용하여 그래프에서 개체 참조 데이터를 유지할지 여부, 사용자 지정 serialization에 대한 서로게이트 및 콘텐츠를 포함하는 XML 요소 및 네임스페이스를 지정하는 매개 변수 XmlDictionaryString 를 지정합니다. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. 또한 이 메서드는 두 XmlDictionaryString 매개 변수의 루트 XML 요소와 네임스페이스뿐만 아니라 개체 그래프에 있을 수 있는 알려진 형식 목록을 지정합니다. |
| DataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString) |
XML 루트 요소 및 형식의 DataContractSerializer 매개 변수를 통해 지정된 네임스페이스를 사용하여 지정된 형식의 개체를 직렬화하거나 역직렬화하는 클래스의 XmlDictionaryString새 인스턴스를 초기화합니다. |
| DataContractSerializer(Type) |
지정된 형식의 DataContractSerializer 개체를 직렬화하거나 역직렬화하는 클래스의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| DataContractResolver |
선언을 알려진 계약 형식에 동적으로 매핑 |
| DataContractSurrogate |
serialization 또는 deserialization 프로세스를 확장할 수 있는 서로게이트 형식을 가져옵니다. |
| IgnoreExtensionDataObject |
클래스가 직렬화되거나 역직렬화될 때 클래스 확장에서 제공하는 데이터를 무시할지 여부를 지정하는 값을 가져옵니다. |
| KnownTypes |
이 인스턴스를 사용하여 serialize된 개체 그래프에 있을 수 있는 형식의 DataContractSerializer컬렉션을 가져옵니다. |
| MaxItemsInObjectGraph |
직렬화 또는 역직렬화할 개체 그래프의 최대 항목 수를 가져옵니다. |
| PreserveObjectReferences |
비표준 XML 구문을 사용하여 개체 참조 데이터를 유지할지 여부를 지정하는 값을 가져옵니다. |
| SerializeReadOnlyTypes |
읽기 전용 형식이 serialize되는지 여부를 지정하는 값을 가져옵니다. |
메서드
| Name | Description |
|---|---|
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| IsStartObject(XmlDictionaryReader) |
역직렬화할 수 있는 개체에 위치할지 여부를 XmlDictionaryReader 결정합니다. |
| IsStartObject(XmlReader) |
역직렬화할 수 있는 개체에 위치할지 여부를 XmlReader 결정합니다. |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| ReadObject(Stream) |
A와 함께 Stream XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다. (다음에서 상속됨 XmlObjectSerializer) |
| ReadObject(XmlDictionaryReader, Boolean, DataContractResolver) |
XML 문서 또는 문서 스트림을 읽고 역직렬화된 개체를 반환합니다. 이 메서드에는 개체 이름의 유효성을 검사할지 여부를 지정하는 매개 변수와 런타임에 매핑 |
| ReadObject(XmlDictionaryReader, Boolean) |
XML 스트림을 읽고 XmlDictionaryReader 역직렬화된 개체를 반환하며, 값을 읽기 전에 개체 이름을 확인하기 위한 확인이 이루어지는지 여부도 지정합니다. |
| ReadObject(XmlDictionaryReader) |
XML 문서 또는 스트림을 읽고 XmlDictionaryReader 역직렬화된 개체를 반환합니다. (다음에서 상속됨 XmlObjectSerializer) |
| ReadObject(XmlReader, Boolean) |
XML 스트림을 읽고 XmlReader 역직렬화된 개체를 반환하며, 값을 읽기 전에 개체 이름을 확인하기 위한 확인이 이루어지는지 여부도 지정합니다. |
| ReadObject(XmlReader) |
XML 스트림을 읽고 XmlReader 역직렬화된 개체를 반환합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
| WriteEndObject(XmlDictionaryWriter) |
를 사용하여 XmlDictionaryWriter닫는 XML 요소를 씁니다. |
| WriteEndObject(XmlWriter) |
를 사용하여 XmlWriter닫는 XML 요소를 씁니다. |
| WriteObject(Stream, Object) |
지정된 StreamXML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 씁니다. (다음에서 상속됨 XmlObjectSerializer) |
| WriteObject(XmlDictionaryWriter, Object, DataContractResolver) |
지정된 XmlDictionaryWriter를 사용하여 XML 문서 또는 스트림에 모든 개체 데이터(시작 XML 요소, 콘텐츠 및 바깥쪽 요소)를 씁니다. 이 메서드는 런타임에 매핑 |
| WriteObject(XmlDictionaryWriter, Object) |
지정된 XmlDictionaryWriterXML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 씁니다. (다음에서 상속됨 XmlObjectSerializer) |
| WriteObject(XmlWriter, Object) |
모든 개체 데이터(시작 XML 요소, 콘텐츠 및 닫는 요소)를 XML 문서 또는 스트림에 XmlWriter씁니다. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
를 사용하여 XmlDictionaryWriterXML 콘텐츠를 씁니다. |
| WriteObjectContent(XmlWriter, Object) |
를 사용하여 XmlWriterXML 콘텐츠를 씁니다. |
| WriteStartObject(XmlDictionaryWriter, Object) |
를 사용하여 XmlDictionaryWriter여는 XML 요소를 씁니다. |
| WriteStartObject(XmlWriter, Object) |
를 사용하여 XmlWriter여는 XML 요소를 씁니다. |
확장명 메서드
| Name | Description |
|---|---|
| GetSerializationSurrogateProvider(DataContractSerializer) |
이 serializer에 대한 서로게이트 serialization 공급자를 반환합니다. |
| SetSerializationSurrogateProvider(DataContractSerializer, ISerializationSurrogateProvider) |
이에 DataContractSerializer대한 서로게이트 serialization 공급자를 지정합니다. |
적용 대상
스레드 보안
이 클래스의 인스턴스는 인스턴스가 orIDataContractSurrogate의 DataContractResolver 구현과 함께 사용되는 경우를 제외하고 스레드로부터 안전합니다.