BinaryFormatter Classe

Definição

Cuidado

BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.

Serializa e desserializa um objeto ou um grafo inteiro de objetos conectados, em formato binário.

public ref class BinaryFormatter sealed : System::Runtime::Serialization::IFormatter
public ref class BinaryFormatter sealed : System::Runtime::Remoting::Messaging::IRemotingFormatter
public sealed class BinaryFormatter : System.Runtime.Serialization.IFormatter
[System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class BinaryFormatter : System.Runtime.Serialization.IFormatter
public sealed class BinaryFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class BinaryFormatter : System.Runtime.Remoting.Messaging.IRemotingFormatter
type BinaryFormatter = class
    interface IFormatter
[<System.Obsolete("BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.", DiagnosticId="SYSLIB0011", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type BinaryFormatter = class
    interface IFormatter
type BinaryFormatter = class
    interface IRemotingFormatter
    interface IFormatter
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryFormatter = class
    interface IRemotingFormatter
    interface IFormatter
Public NotInheritable Class BinaryFormatter
Implements IFormatter
Public NotInheritable Class BinaryFormatter
Implements IRemotingFormatter
Herança
BinaryFormatter
Atributos
Implementações

Comentários

Aviso

BinaryFormatter não é seguro e não pode ser transformado em seguro. Para saber mais, confira o Guia de segurança do BinaryFormatter.

As SoapFormatter classes e BinaryFormatter implementam a IRemotingFormatter interface para dar suporte a RPCs (chamadas de procedimento remoto) e à IFormatter interface (herdada pelo IRemotingFormatter) para dar suporte à serialização de um grafo de objetos. A SoapFormatter classe também dá suporte a RPCs com ISoapMessage objetos, sem usar a IRemotingFormatter funcionalidade .

Durante rpcs, a IRemotingFormatter interface permite a especificação de dois grafos de objeto separados: o grafo de objetos a serem serializados e um grafo adicional que contém uma matriz de objetos de cabeçalho que transmitem informações sobre a chamada de função remota (por exemplo, ID de transação ou uma assinatura de método).

RPCs que usam o BinaryFormatter separado em duas partes distintas: chamadas de método, que são enviadas para o servidor com o objeto remoto que contém o método chamado e respostas de método, que são enviadas do servidor para o cliente com as informações de status e resposta do método chamado.

Durante a serialização de um método, chame o primeiro objeto do grafo de objeto deve dar suporte à IMethodCallMessage interface . Para desserializar uma chamada de método, use o Deserialize método com o HeaderHandler parâmetro . A infraestrutura de comunicação remota usa o HeaderHandler delegado para produzir um objeto que dá suporte à ISerializable interface . Quando o BinaryFormatter invoca o HeaderHandler delegado, ele retorna o URI do objeto remoto com o método que está sendo chamado. O primeiro objeto no grafo retornado dá suporte à IMethodCallMessage interface .

O procedimento de serialização para uma resposta de método é idêntico ao de uma chamada de método, exceto que o primeiro objeto do grafo de objeto deve dar suporte à IMethodReturnMessage interface . Para desserializar uma resposta de método, use o DeserializeMethodResponse método . Para economizar tempo, os detalhes sobre o objeto do chamador não são enviados para o objeto remoto durante a chamada de método. Em vez disso, esses detalhes são obtidos da chamada de método original, que é passada para o DeserializeMethodResponse método no IMethodCallMessage parâmetro . O primeiro objeto no grafo retornado pelo DeserializeMethodResponse método dá suporte à IMethodReturnMessage interface .

Importante

Usar a serialização binária para desserializar dados não confiáveis pode levar a riscos de segurança. Para obter mais informações, consulte Validar todas as entradas e o guia de segurança BinaryFormatter.

Substitutos não pagos

Todos os caracteres alternativos não emparelhados são perdidos na serialização binária. Por exemplo, a cadeia de caracteres a seguir contém um caractere (\ud800Unicode alternativo alto ) entre as duas Test palavras:

Test\ud800Test

Antes da serialização, a matriz de bytes da cadeia de caracteres é a seguinte:

Valor da matriz de bytes Caractere
84 T
101 e
115 s
116 t
55296 \ud800
84 T
101 e
115 s
116 t

Após a desserialização, o caractere Unicode alternativo alto é perdido:

Valor da matriz de bytes Caractere
84 T
101 e
115 s
116 t
84 T
101 e
115 s
116 t

Construtores

BinaryFormatter()
Obsoleto.

Inicializa uma nova instância da classe BinaryFormatter com valores padrão.

BinaryFormatter(ISurrogateSelector, StreamingContext)
Obsoleto.

Inicializa uma nova instância de BinaryFormatter classe com um seletor substituto determinado e o contexto de streaming.

Propriedades

AssemblyFormat
Obsoleto.

Obtém ou define o comportamento do desserializador em relação a encontrar e carregar assemblies.

Binder
Obsoleto.

(Não seguro) Obtém ou define um objeto do tipo SerializationBinder que controla a associação de um objeto serializado a um tipo.

Context
Obsoleto.

Obtém ou define o StreamingContext para esse formatador.

FilterLevel
Obsoleto.

Obtém ou define o TypeFilterLevel de desserialização automática que o BinaryFormatter executa.

SurrogateSelector
Obsoleto.

Obtém ou define um ISurrogateSelector que controla a substituição de tipo durante a serialização e desserialização.

TypeFormat
Obsoleto.

Obtém ou define o formato no qual as descrições de tipo são apresentadas no fluxo serializado.

Métodos

Deserialize(Stream)
Obsoleto.

Desserializa o fluxo especificado em um grafo de objeto.

Deserialize(Stream, HeaderHandler)
Obsoleto.

Desserializa o fluxo especificado em um grafo de objeto. O HeaderHandler fornecido manipula qualquer cabeçalho nesse fluxo.

DeserializeMethodResponse(Stream, HeaderHandler, IMethodCallMessage)
Obsoleto.

Desserializa uma resposta a uma chamada de método remoto do Stream fornecido.

Equals(Object)
Obsoleto.

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()
Obsoleto.

Serve como a função de hash padrão.

(Herdado de Object)
GetType()
Obsoleto.

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()
Obsoleto.

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Serialize(Stream, Object)
Obsoleto.

Serializa o objeto ou grafo de objetos com o topo (raiz) especificado para o fluxo especificado.

Serialize(Stream, Object, Header[])
Obsoleto.

Serializa o objeto ou o grafo de objetos com o topo (raiz) especificado para o fluxo determinado, anexando os cabeçalhos fornecidos.

ToString()
Obsoleto.

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
UnsafeDeserialize(Stream, HeaderHandler)
Obsoleto.

Desserializa o fluxo especificado em um grafo de objeto. O HeaderHandler fornecido manipula qualquer cabeçalho nesse fluxo.

UnsafeDeserializeMethodResponse(Stream, HeaderHandler, IMethodCallMessage)
Obsoleto.

Desserializa uma resposta a uma chamada de método remoto do Stream fornecido.

Aplica-se a