Docs Menu
Docs Home
/ / /
C#/.NET
/

직렬화

이 페이지의 내용

  • 개요
  • Serializer
  • Serializer 레지스트리
  • 사용자 지정 직렬 변환기
  • 옵트인 인터페이스
  • IBsonIdProvider
  • IBsonDocumentSerializer
  • IBsonArraySerializer
  • 추가 정보

이 가이드에서는 MongoDB .NET/C# 드라이버를 사용하여 직렬화를 수행하는 방법을 배울 수 있습니다. 직렬화는 MongoDB에 저장하기 위해 C# 객체를 BSON 문서에 매핑하는 프로세스입니다.

직렬화

직렬화에 학습 보려면 Wikipedia의직렬화 문서를 참조하세요.

직렬 변환기는 C# 객체와 BSON 문서 간의 변환을 처리하는 클래스입니다. 직렬 변환기는 IBsonSerializer 인터페이스를 구현합니다. .NET/C# 드라이버에는 기본 유형, collection 유형 및 사용자 지정 클래스를 처리하기 위해 만들어진 많은 내장 직렬 변환기가 있습니다.

사용 가능한 직렬 변환기의 전체 목록은 직렬 변환기 네임스페이스 API 문서를 참조하세요.

직렬화기 레지스트리에는 애플리케이션에서 사용할 수 있는 모든 등록된 직렬화기가 포함되어 있습니다. 대부분의 내장 직렬화기는 애플리케이션을 시작할 때 직렬화기 레지스트리에 자동으로 등록됩니다. 그러나 사용자 지정 직렬화기를 사용하려면 먼저 다음 예시와 같이 직렬화기 레지스트리에 직렬화기를 추가해야 합니다:

BsonSerializer.RegisterSerializer(new CustomTypeSerializer());

직렬화기 레지스트리에 액세스하려면 BsonSerializer 클래스의 SerializerRegistry 속성을 다음과 같이 사용하세요.

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

중요

직렬 변환기 레지스트리는 글로벌 레지스트리입니다. 즉, 단일 애플리케이션에서 여러 개의 레지스트리를 사용할 수 없습니다.

경우에 따라 사용자 지정 직렬 변환기를 만들어야 할 수도 있습니다. 사용자 지정 직렬 변환기를 만들 때는 SerializerBase<T> 추상 베이스 클래스를 구현하고 Deserialize()Serialize() 메서드를 무효화합니다.

다음 코드 예시에서는 사용자 지정 BsonRegularExpression 직렬 변환기를 보여줍니다.

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

.NET/C# 드라이버에는 직렬 변환기가 처리하는 데이터 유형에 따라 사용자 지정 직렬 변환기 클래스가 구현할 수 있는 몇 가지 선택적 인터페이스가 있습니다.

IBsonIdProvider 인터페이스는 및 메서드를 GetDocumentId() SetDocumentId() 제공하며, 직렬화하려는 객체가 이외의 _id 유형을 사용하는 경우 ObjectId 유용합니다.

IBsonDocumentSerializer 구현 인터페이스를 사용하면 드라이버가 직렬화하려는 객체의 멤버 정보에 액세스할 수 있습니다. 이를 통해 드라이버는 사용자 지정 직렬 변환기를 사용할 때 형식이 안전한 쿼리를 올바르게 구성할 수 있습니다.

IBsonArraySerializer 구현 인터페이스를 사용하면 드라이버가 배열의 개별 항목에 대한 직렬화 정보에 액세스할 수 있습니다.

.NET/C# 드라이버를 사용하여 C# 객체를 직렬화하는 방법에 대해 자세히 알아보려면 다음 페이지를 참조하세요.

  • 클래스 매핑

  • POCO

  • 다형성 객체

  • GUID

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

쿼리