DataContractSerializer Classe
TOC
Recolher sumário
Expandir sumário
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe DataContractSerializer

.NET Framework (current version)
 

Serializa e desserializa uma instância de um tipo em um fluxo XML ou um documento usando um contrato de dados fornecidos. Esta classe não pode ser herdada.

Namespace:   System.Runtime.Serialization
Assembly:  System.Runtime.Serialization (em System.Runtime.Serialization.dll)


public sealed class DataContractSerializer : XmlObjectSerializer

NomeDescrição
System_CAPS_pubmethodDataContractSerializer(Type)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.

System_CAPS_pubmethodDataContractSerializer(Type, DataContractSerializerSettings)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo e configurações especificados.

System_CAPS_pubmethodDataContractSerializer(Type, IEnumerable<Type>)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado, e uma coleção de tipos conhecidos que podem estar presente no objeto gráfico.

System_CAPS_pubmethodDataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica uma lista de tipos conhecidos que podem estar presentes no objeto gráfico, no número máximo de itens de gráfico para serializar, os parâmetros para ignorar dados inesperados, usar construções não padronizadas XML para preservar dados de referência de objeto no gráfico, e um alternativo para a serialização personalizada.

System_CAPS_pubmethodDataContractSerializer(Type, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica uma lista de tipos conhecidos que podem estar presentes no objeto gráfico, no número máximo de itens de gráfico para serializar, os parâmetros para ignorar dados inesperados, usar construções não padronizadas XML para preservar dados de referência de objeto no gráfico, um alternativo para a serialização personalizada, e uma alternativa para mapear declarações de xsi:type em tempo de execução.

System_CAPS_pubmethodDataContractSerializer(Type, String, String)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado usando o elemento raiz e o fornecidos XML.

System_CAPS_pubmethodDataContractSerializer(Type, String, String, IEnumerable<Type>)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica o elemento raiz XML e o namespace em dois parâmetros da cadeia de caracteres assim como em uma lista de tipos conhecidos que podem estar presente no objeto gráfico.

System_CAPS_pubmethodDataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica uma lista de tipos conhecidos que podem estar presentes no objeto gráfico, o número máximo de itens de gráfico para serializar, os parâmetros para ignorar dados inesperados, usar as construções não padronizadas XML para preservar dados de referência de objeto no gráfico, um alternativo para a serialização personalizada, e o elemento XML e o que contêm o conteúdo.

System_CAPS_pubmethodDataContractSerializer(Type, String, String, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica uma lista de tipos conhecidos que podem estar presentes no objeto gráfico, o número máximo de itens de gráfico para serializar, os parâmetros para ignorar dados inesperados, usar construções não padronizadas XML para preservar dados de referência de objeto no gráfico, um alternativo para a serialização personalizada, o elemento XML e o namespace que contém o conteúdo, e uma alternativa para mapear declarações de xsi:type em tempo de execução.

System_CAPS_pubmethodDataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado usando o elemento raiz e namespace XML especificados com os parâmetros de tipo XmlDictionaryString.

System_CAPS_pubmethodDataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica o elemento raiz XML e o namespace em dois parâmetros de XmlDictionaryString assim como em uma lista de tipos conhecidos que podem estar presente no objeto gráfico.

System_CAPS_pubmethodDataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica uma lista de tipos conhecidos que podem estar presentes no objeto gráfico, no número máximo de itens de gráfico para serializar, os parâmetros para ignorar dados inesperados, usar construções não padronizadas XML para preservar dados de referência de objeto no gráfico, um alternativo para a serialização personalizada, e os parâmetros de XmlDictionaryString que especificam o elemento XML e o que contêm o conteúdo.

System_CAPS_pubmethodDataContractSerializer(Type, XmlDictionaryString, XmlDictionaryString, IEnumerable<Type>, Int32, Boolean, Boolean, IDataContractSurrogate, DataContractResolver)

Inicializa uma nova instância da classe DataContractSerializer para serializar ou desserializar um objeto do tipo especificado.Esse método também especifica uma lista de tipos conhecidos que podem estar presentes no objeto gráfico, o número máximo de itens de gráfico para serializar, os parâmetros para ignorar dados inesperados, usar construções não padronizadas XML para preservar dados de referência de objeto no gráfico, um alternativo para a serialização personalizada, os parâmetros de XmlDictionaryString que especificam o elemento XML e o namespace que contém o conteúdo, e uma alternativa para mapear declarações de xsi:type em tempo de execução.

NomeDescrição
System_CAPS_pubpropertyDataContractResolver

Obtém o componente usado para mapear dinamicamente tipos conhecidos do contrato das declarações de xsi:type .

System_CAPS_pubpropertyDataContractSurrogate

Obtém um tipo substituta que pode estender a serialização ou o processo de desserialização.

System_CAPS_pubpropertyIgnoreExtensionDataObject

Obtém um valor que especifica se ignorar os dados fornecidos por uma extensão da classe quando a classe serializada ou desserializado.

System_CAPS_pubpropertyKnownTypes

Obtém uma coleção de tipos que podem estar presentes no objeto gráfico serializado usando essa instância de DataContractSerializer.

System_CAPS_pubpropertyMaxItemsInObjectGraph

Obtém o número máximo de itens em um objeto gráfico para serializar e desserializar.

System_CAPS_pubpropertyPreserveObjectReferences

Obtém um valor que especifica se usar construções não padronizadas XML para preservar dados de referência de objeto.

System_CAPS_pubpropertySerializeReadOnlyTypes

Obtém um valor que especifica se os tipos somente leitura são serializados.

NomeDescrição
System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (herdado de Object.)

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash para um tipo específico. (herdado de Object.)

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual. (herdado de Object.)

System_CAPS_pubmethodIsStartObject(XmlDictionaryReader)

Determina se XmlDictionaryReader está localizado em um objeto que pode ser desserializado.(Substitui XmlObjectSerializer.IsStartObject(XmlDictionaryReader).)

System_CAPS_pubmethodIsStartObject(XmlReader)

Determina se XmlReader está localizado em um objeto que pode ser desserializado.(Substitui XmlObjectSerializer.IsStartObject(XmlReader).)

System_CAPS_pubmethodReadObject(Stream)

Ler o fluxo XML ou o documento com Stream e retorna o objeto desserializado.(herdado de XmlObjectSerializer.)

System_CAPS_pubmethodReadObject(XmlDictionaryReader)

Lê o documento XML ou o fluxo com XmlDictionaryReader e retorna o objeto desserializado.(herdado de XmlObjectSerializer.)

System_CAPS_pubmethodReadObject(XmlDictionaryReader, Boolean)

Ler o fluxo XML com XmlDictionaryReader e retorna o objeto desserializado, e também especifica se uma verificação é feita para verificar o nome do objeto antes de ler o valor. (Substitui XmlObjectSerializer.ReadObject(XmlDictionaryReader, Boolean).)

System_CAPS_pubmethodReadObject(XmlDictionaryReader, Boolean, DataContractResolver)

Ler um fluxo de documento XML ou documento e retorna o objeto desserializado. O método inclui um parâmetro para especificar se o nome de objeto é verificado é validado, e um resolvedor para mapear declarações de xsi:type em tempo de execução.

System_CAPS_pubmethodReadObject(XmlReader)

Ler o fluxo XML com XmlReader e retorna o objeto desserializado.(Substitui XmlObjectSerializer.ReadObject(XmlReader).)

System_CAPS_pubmethodReadObject(XmlReader, Boolean)

Ler o fluxo XML com XmlReader e retorna o objeto desserializado, e também especifica se uma verificação é feita para verificar o nome do objeto antes de ler o valor.(Substitui XmlObjectSerializer.ReadObject(XmlReader, Boolean).)

System_CAPS_pubmethodToString()

Retorna uma string que representa o objeto atual.(herdado de Object.)

System_CAPS_pubmethodWriteEndObject(XmlDictionaryWriter)

Grava o elemento XML de fechamento usando XmlDictionaryWriter.(Substitui XmlObjectSerializer.WriteEndObject(XmlDictionaryWriter).)

System_CAPS_pubmethodWriteEndObject(XmlWriter)

Grava o elemento XML de fechamento usando XmlWriter.(Substitui XmlObjectSerializer.WriteEndObject(XmlWriter).)

System_CAPS_pubmethodWriteObject(Stream, Object)

Grava o conteúdo completo (a partir do, conteúdo, e de término) do objeto para o documento XML ou fluxo com Streamespecificado.(herdado de XmlObjectSerializer.)

System_CAPS_pubmethodWriteObject(XmlDictionaryWriter, Object)

Grava o conteúdo completo (a partir do, conteúdo, e de término) do objeto para o documento XML ou fluxo com XmlDictionaryWriterespecificado.(herdado de XmlObjectSerializer.)

System_CAPS_pubmethodWriteObject(XmlDictionaryWriter, Object, DataContractResolver)

Grava os dados de objeto (começando o elemento XML, conteúdo, e incluindo o elemento) a um documento XML ou um fluxo usando o XmlDictionaryWriter especificado.O método inclui um resolvedor para mapear declarações de xsi:type em tempo de execução.

System_CAPS_pubmethodWriteObject(XmlWriter, Object)

Grava os dados de objeto (começando o elemento XML, conteúdo, e fechando o elemento) a um documento XML ou um fluxo com XmlWriter.(Substitui XmlObjectSerializer.WriteObject(XmlWriter, Object).)

System_CAPS_pubmethodWriteObjectContent(XmlDictionaryWriter, Object)
System_CAPS_pubmethodWriteObjectContent(XmlWriter, Object)
System_CAPS_pubmethodWriteStartObject(XmlDictionaryWriter, Object)
System_CAPS_pubmethodWriteStartObject(XmlWriter, Object)

Grava o elemento XML de abertura usando XmlWriter.(Substitui XmlObjectSerializer.WriteStartObject(XmlWriter, Object).)

Use a classe DataContractSerializer para serializar e desserializar instâncias de um tipo em um fluxo XML ou documento.
Por exemplo, você pode criar um tipo nomeado Person com as propriedades que contêm dados essenciais, como um nome e endereço.Você pode criar e manipular uma instância da classe de Person e escrever todos seus valores de propriedade em um documento XML para uma recuperação mais recente, ou em um fluxo XML para o transporte imediato.O mais importante, DataContractSerializer é usado para serializar e desserializar dados enviados em mensagens de Windows Communication Foundation (WCF) .Aplique o atributo de DataContractAttribute a classes, e o atributo de DataMemberAttribute para classificar membros para especificar as propriedades e campos que são serializados.

os tipos deUma lista de que podem ser serializados, consulte Tipos com suporte fornecido pelo serializador de contrato de dados.

Para usar DataContractSerializer, primeiro crie uma instância de uma classe e um objeto apropriado ao ler ou gravar o formato; por exemplo, uma instância de XmlDictionaryWriter.Chame o método de WriteObject para manter os dados.Para recuperar dados, crie um objeto apropriada para ler o formato de dados (como XmlDictionaryReader para um documento XML) e chame o método de ReadObject .

Para obter mais informações sobre usando DataContractSerializer, consulte Serialização e desserialização.

Você pode definir o tipo de um serializador do contrato de dados usando o elemento de <dataContractSerializer> em um arquivo de configuração de aplicativo cliente.

DataContractSerializer é usado em combinação com as classes de DataContractAttribute e de DataMemberAttribute .Para preparar uma classe para serialização, aplicar DataContractAttribute à classe. Para cada membro da classe que retorna dados que você deseja serializar, aplicar DataMemberAttribute.Você pode serializar campos e propriedades, independentemente de acessibilidade: interno private, protected, interno, protegido, ou público.

Por exemplo, seu esquema especifica Customer com uma propriedade de ID , mas você já tiver um aplicativo existente que usa um tipo nomeado Person com uma propriedade de Name .Para criar um tipo que está de acordo com o contrato, aplique primeiro DataContractAttribute à classe. Aplicar em DataMemberAttribute para cada campo ou propriedade que você deseja publicar.

System_CAPS_noteObservação

Você pode aplicar DataMemberAttribute a membros públicos e particulares.

O formato final XML não precisa ser texto.Em vez disso, DataContractSerializer grava os dados como um infoset XML, que permite que você escreva os dados para qualquer formato reconhecido por XmlReader e por XmlWriter.É recomendável que você use as classes de XmlDictionaryReader e de XmlDictionaryWriter para ler e escrever, porque ambos são otimizados para trabalhar com DataContractSerializer.

Se você estiver criando uma classe que tem os campos ou propriedades que devem ser preenchidos antes de serialização ou desserialização de ocorre, o retorno de chamada uso de atributos, como descrito em Retornos de chamada de serialização tolerantes à versão.

Quando serializar ou desserializar um objeto, ele são necessárias que o tipo “é conhecido como” DataContractSerializer.Inicie criando uma instância de uma classe que implementa IEnumerable<T> (como List<T>) e adicione os tipos conhecidos à coleção.Crie uma instância de DataContractSerializer usando uma das sobrecargas que leva IEnumerable<T> (por exemplo, DataContractSerializer(Type, IEnumerable<Type>).

System_CAPS_noteObservação

Diferentemente de outros tipos primitivos, a estrutura de DateTimeOffset não é um tipo conhecido por padrão, portanto deve manualmente ser adicionada à lista de tipos conhecidos (consulte Data Contract Known Types).

DataContractSerializer entende contratos de dados que foram criados para ser compatíveis com versões futuras do contrato.Esses tipos implementam a interface de IExtensibleDataObject .A interface apresenta a propriedade de ExtensionData que retorna um objeto de ExtensionDataObject .Para saber mais, veja Forward-Compatible Data Contracts.

Ao criar uma instância do objeto alvo durante a desserialização, DataContractSerializer não chama o construtor do objeto alvo.Se você criar o tipo de DataContract [] que é acessível de confiança parcial (isto é, ele é público e um assembly que tem o atributo de AllowPartiallyTrustedCallers aplicado) e que executa algumas ações relacionadas à segurança, você deve estar ciente que o construtor não é chamado.Em particular, as seguintes técnicas não funcionam:

  • Se você tentar restringir o acesso de confiança parcial fazendo o construtor interna ou particular, ou adicionando LinkDemand para o construtor -- nenhuma desses tem qualquer efeito durante a desserialização em confiança parcial.

  • Se você codifica a classe pressupõe que o construtor executar, a classe pode obter em um estado inválido interno que é aproveitável.

O código exemplo a seguir mostra um tipo nomeado Person que é serializado por DataContractSerializer.O atributo de DataContractAttribute é aplicado à classe, e DataMemberAttribute é aplicado aos membros para instruir DataContractSerializer o que serializar.

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));
        }
    }

Universal Windows Platform
Disponível desde 4.5
.NET Framework
Disponível desde 3.0
Portable Class Library
Com suporte em: portable .NET platforms
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

As instâncias da classe tem segurança de segmentos a não ser que quando a instância é usada com uma implementação de IDataContractSurrogate ou de DataContractResolver.

Retornar ao topo
Mostrar:
© 2016 Microsoft