XmlObjectSerializer 클래스

정의

개체를 XML 스트림 또는 문서로 직렬화하는 데 사용되는 기본 클래스를 제공합니다. 이 클래스는 추상입니다.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
상속
XmlObjectSerializer
파생

예제

다음 예제에서는 매개 변수로 포함 하는 명명 WriteObjectWithInstanceXmlObjectSerializer 메서드를 보여 있습니다. 메서드는 메서드를 사용하거나 NetDataContractSerializer 메서드를 호출하여 개체를 DataContractSerializer serialize합니다WriteObject.

public class Test
{
    private void WriteObjectWithInstance(XmlObjectSerializer xm, Company graph,
       string fileName)
    {
        // Use either the XmlDataContractSerializer or NetDataContractSerializer,
        // or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType());
        FileStream fs = new FileStream(fileName, FileMode.Create);
        XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
        xm.WriteObject(writer, graph);
        Console.WriteLine("Done writing {0}", fileName);
    }

    private void Run()
    {
        // Create the object to write to a file.
        Company graph = new Company();
        graph.Name = "cohowinery.com";

        // Create a DataContractSerializer and a NetDataContractSerializer.
        // Pass either one to the WriteObjectWithInstance method.
        DataContractSerializer dcs = new DataContractSerializer(typeof(Company));
        NetDataContractSerializer ndcs = new NetDataContractSerializer();
        WriteObjectWithInstance(dcs, graph, @"datacontract.xml");
        WriteObjectWithInstance(ndcs, graph, @"netDatacontract.xml");
    }

    [DataContract]
    public class Company
    {
        [DataMember]
        public string Name;
    }

    static void Main()
    {
        try
        {
            Console.WriteLine("Starting");
            Test t = new Test();
            t.Run();
            Console.WriteLine("Done");
            Console.ReadLine();
        }

        catch (InvalidDataContractException iExc)
        {
            Console.WriteLine("You have an invalid data contract: ");
            Console.WriteLine(iExc.Message);
            Console.ReadLine();
        }

        catch (SerializationException serExc)
        {
            Console.WriteLine("There is a problem with the instance:");
            Console.WriteLine(serExc.Message);
            Console.ReadLine();
        }

        catch (QuotaExceededException qExc)
        {
            Console.WriteLine("The quota has been exceeded");
            Console.WriteLine(qExc.Message);
            Console.ReadLine();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
            Console.WriteLine(exc.ToString());
            Console.ReadLine();
        }
    }
Public Class Test
    
    Private Sub WriteObjectWithInstance(ByVal xm As XmlObjectSerializer, _
      ByVal graph As Company, ByVal fileName As String) 
        ' Use either the XmlDataContractSerializer or NetDataContractSerializer,
        ' or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType())
        Dim fs As New FileStream(fileName, FileMode.Create)
        Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
        xm.WriteObject(writer, graph)
        Console.WriteLine("Done writing {0}", fileName)
    
    End Sub 
    
    
    Private Sub Run() 
        ' Create the object to write to a file.
        Dim graph As New Company()
        graph.Name = "cohowinery.com"
        
        ' Create a DataContractSerializer and a NetDataContractSerializer.
        ' Pass either one to the WriteObjectWithInstance method.
        Dim dcs As New DataContractSerializer(GetType(Company))
        Dim ndcs As New NetDataContractSerializer()
        WriteObjectWithInstance(dcs, graph, "datacontract.xml")
        WriteObjectWithInstance(ndcs, graph, "netDatacontract.xml")
    
    End Sub 
    
    <DataContract()>  _
    Public Class Company
        <DataMember()>  _
        Public Name As String
    End Class 
    
    
    Shared Sub Main() 
        Try
            Console.WriteLine("Starting")
            Dim t As New Test()
            t.Run()
            Console.WriteLine("Done")
            Console.ReadLine()
        
        Catch iExc As InvalidDataContractException
            Console.WriteLine("You have an invalid data contract: ")
            Console.WriteLine(iExc.Message)
            Console.ReadLine()
        
        Catch serExc As SerializationException
            Console.WriteLine("There is a problem with the instance:")
            Console.WriteLine(serExc.Message)
            Console.ReadLine()
        
        Catch qExc As QuotaExceededException
            Console.WriteLine("The quota has been exceeded")
            Console.WriteLine(qExc.Message)
            Console.ReadLine()
        Catch exc As Exception
            Console.WriteLine(exc.Message)
            Console.WriteLine(exc.ToString())
            Console.ReadLine()
        End Try
    
    End Sub 
End Class

설명

개체를 XmlObjectSerializer 직렬화하고 역직렬화하도록 자체 직렬 변환기를 만들도록 확장합니다. DataContractSerializer 클래스와 NetDataContractSerializer 클래스는 모두 상속 XmlObjectSerializer 되며 데이터 계약 규칙(및 해당 개체를 사용하여 DataContractAttribute 만든 개체)을 준수하는 개체를 직렬화하고 DataMemberAttribute역직렬화하는 데 사용됩니다.

구현자 참고

상속XmlObjectSerializer할 때 다음 멤버WriteStartObject(XmlDictionaryWriter, Object)WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter)를 재정의해야 합니다. IsStartObject 또한 읽기 및 역직렬화를 위해 메서드 ReadObject 와 메서드를 구현해야 합니다.

생성자

Name Description
XmlObjectSerializer()

XmlObjectSerializer 클래스의 새 인스턴스를 초기화합니다.

메서드

Name Description
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
IsStartObject(XmlDictionaryReader)

읽을 수 있는 XML 요소 위에 위치할지 여부를 XmlDictionaryReader 지정하는 값을 가져옵니다.

IsStartObject(XmlReader)

읽을 수 있는 XML 요소 위에 위치할지 여부를 XmlReader 지정하는 값을 가져옵니다.

MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ReadObject(Stream)

A와 함께 Stream XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다.

ReadObject(XmlDictionaryReader, Boolean)

XML 스트림 또는 문서를 읽고 XmlDictionaryReader 역직렬화된 개체를 반환합니다. 또한 직렬 변환기가 데이터를 읽기 전에 읽을 수 있는지 여부를 지정할 수 있습니다.

ReadObject(XmlDictionaryReader)

XML 문서 또는 스트림을 읽고 XmlDictionaryReader 역직렬화된 개체를 반환합니다.

ReadObject(XmlReader, Boolean)

XML 문서를 XmlReader 읽고 역직렬화된 개체를 반환합니다. 또한 직렬 변환기가 데이터를 읽기 전에 읽을 수 있는지 여부를 지정할 수 있습니다.

ReadObject(XmlReader)

XML 문서 또는 스트림을 읽고 XmlReader 역직렬화된 개체를 반환합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)
WriteEndObject(XmlDictionaryWriter)

개체 데이터의 끝을 XML 문서 또는 스트림에 닫는 XML 요소로 XmlDictionaryWriter씁니다.

WriteEndObject(XmlWriter)

개체 데이터의 끝을 XML 문서 또는 스트림에 닫는 XML 요소로 XmlWriter씁니다.

WriteObject(Stream, Object)

지정된 StreamXML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 씁니다.

WriteObject(XmlDictionaryWriter, Object)

지정된 XmlDictionaryWriterXML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 씁니다.

WriteObject(XmlWriter, Object)

지정된 XmlWriterXML 문서 또는 스트림에 개체의 전체 콘텐츠(시작, 콘텐츠 및 끝)를 씁니다.

WriteObjectContent(XmlDictionaryWriter, Object)

지정 XmlDictionaryWriter한 내용을 사용하여 개체의 내용만 XML 문서 또는 스트림에 씁니다.

WriteObjectContent(XmlWriter, Object)

지정된 XmlWriterXML 문서 또는 스트림에 개체의 내용만 씁니다.

WriteStartObject(XmlDictionaryWriter, Object)

지정된 XmlDictionaryWriterXML 요소를 사용하여 개체 데이터의 시작을 여는 XML 요소로 씁니다.

WriteStartObject(XmlWriter, Object)

지정된 XmlWriterXML 요소를 사용하여 개체 데이터의 시작을 여는 XML 요소로 씁니다.

적용 대상

추가 정보