Menu Docs
Página inicial do Docs
/ / /
C#/.NET
/

Serialização

Nesta página

  • Visão geral
  • Serializadores
  • SerializerRegistry
  • Serializadores personalizados
  • Interfaces Opt-in
  • IBsonIdProvider
  • IBsonDocumentSerializer
  • IBsonArraySerializer
  • Informações adicionais

Neste guia, você pode aprender a usar o driver MongoDB .NET/C# para realizar a serialização. Serialização é o processo de mapeamento de um objeto C# em um documento BSON para armazenamento no MongoDB.

Dica

Serialização

Para saber mais sobre serialização, consulte o artigoSerialização na Wikipedia.

Os serializadores são classes que lidam com a tradução de objetos C# de e para documentos BSON. Os serializadores implementam a interface IBsonSerializer . O driver .NET/C# tem muitos serializadores integrados feitos para lidar com tipos primitivos, tipos de collection e classes personalizadas.

Para obter uma lista completa dos serializadores disponíveis, consulte a documentação da API do namespace Serializadores.

O registro de serializadores contém todos os serializadores registrados que estão disponíveis para o seu aplicativo. Muitos dos serializadores incorporados são registrados automaticamente no registro de serializadores durante a inicialização do aplicativo. No entanto, antes de usar um serializador personalizado, você deve adicioná-lo ao registro do serializador, conforme mostrado no exemplo a seguir:

BsonSerializer.RegisterSerializer(new CustomTypeSerializer());

Para acessar o registro do serializador, use a propriedade SerializerRegistry da classe BsonSerializer da seguinte maneira:

var intSerializer = BsonSerializer.SerializerRegistry.GetSerializer<int>();

Importante

O registro do serializador é um registro global. Ou seja, não é possível usar vários registros em um único aplicativo.

Em alguns casos, talvez seja necessário criar um serializador personalizado. Ao criar um serializador personalizado, implemente a classe de base abstrata SerializerBase<T> e substitua os métodos Deserialize() e Serialize().

O exemplo de código a seguir mostra um serializador BsonRegularExpression personalizado:

class CustomRegularExpressionSerializer : SerializerBase<Regex>
{
public override Regex Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
var type = context.Reader.GetCurrentBsonType();
switch (type)
{
case BsonType.RegularExpression:
return context.Reader.ReadRegularExpression().AsRegex;
case BsonType.String:
var pattern = context.Reader.ReadString();
return new Regex(pattern);
default:
throw new NotSupportedException($"Cannot convert a {type} to a RegularExpression.");
}
}
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Regex value)
{
context.Writer.WriteRegularExpression(value);
}
}

O driver .NET/C# tem várias interfaces opcionais que sua classe de serializador personalizado pode implementar, dependendo do tipo de dados que o serializador manipula.

O IBsonIdProvider interface fornece os GetDocumentId() SetDocumentId() métodos e , e é útil se o objeto que você está serializando usa um _id tipo diferente de ObjectId.

Implementando o IBsonDocumentSerializer permite que o driver acesse as informações de membro do objeto que você está serializando. Isso permite que o driver construa corretamente queries seguras contra erros de digitação ao usar um serializador personalizado.

Implementando o IBsonArraySerializer permite que o driver acesse informações de serialização para itens individuais em uma array.

Para saber mais sobre como usar o driver .NET/C# para serializar objetos C#, consulte as seguintes páginas:

  • Mapeamento de classe

  • POCOs

  • Objetos polimórficos

  • GUIDs

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API:

Voltar

Especificar uma query