다음을 통해 공유


XmlObjectSerializer 클래스

정의

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

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

예제

다음 예제에서는 라는 WriteObjectWithInstance 메서드를 매개 변수로 포함 XmlObjectSerializer 합니다. 합니다 메서드를 사용 하 여 개체를 직렬화 합니다 DataContractSerializer 또는 NetDataContractSerializer 호출 하 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상속하는 경우 , , WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter)멤버WriteStartObject(XmlDictionaryWriter, Object)를 재정의해야 합니다. IsStartObject 또한 읽기 및 역직렬화를 위해 및 ReadObject 메서드를 구현해야 합니다.

생성자

XmlObjectSerializer()

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

메서드

Equals(Object)

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

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

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

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

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

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

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

IsStartObject(XmlReader)

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

MemberwiseClone()

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

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

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

ReadObject(XmlDictionaryReader)

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

ReadObject(XmlDictionaryReader, Boolean)

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

ReadObject(XmlReader)

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

ReadObject(XmlReader, Boolean)

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

ToString()

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

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

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

WriteEndObject(XmlWriter)

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

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 요소로 씁니다.

적용 대상

추가 정보