다음을 통해 공유


XmlObjectSerializer 클래스

정의

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

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

예제

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

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 상속되며 데이터 계약 규칙(DataContractAttributeDataMemberAttribute사용하여 만든 개체)을 준수하는 개체를 직렬화하고 역직렬화하는 데 사용됩니다.

구현자 참고

XmlObjectSerializer상속하는 경우 WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter)멤버를 재정의해야 합니다. 또한 읽기 및 역직렬화를 위해 IsStartObjectReadObject 메서드를 구현해야 합니다.

생성자

XmlObjectSerializer()

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

메서드

Equals(Object)

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

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

기본 해시 함수로 사용됩니다.

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

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

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

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

IsStartObject(XmlReader)

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

MemberwiseClone()

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

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

Stream 사용하여 XML 스트림 또는 문서를 읽고 역직렬화된 개체를 반환합니다.

ReadObject(XmlDictionaryReader, Boolean)

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

ReadObject(XmlDictionaryReader)

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

ReadObject(XmlReader, Boolean)

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

ReadObject(XmlReader)

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

ToString()

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

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

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

WriteEndObject(XmlWriter)

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

WriteObject(Stream, Object)

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

WriteObject(XmlDictionaryWriter, Object)

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

WriteObject(XmlWriter, Object)

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

WriteObjectContent(XmlDictionaryWriter, Object)

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

WriteObjectContent(XmlWriter, Object)

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

WriteStartObject(XmlDictionaryWriter, Object)

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

WriteStartObject(XmlWriter, Object)

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

적용 대상

추가 정보