직렬화
이 페이지의 내용
개요
이 가이드에서는 MongoDB .NET/C# 드라이버를 사용하여 직렬화를 수행하는 방법을 배울 수 있습니다. 직렬화는 MongoDB에 저장하기 위해 C# 객체를 BSON 문서에 매핑하는 프로세스입니다.
Serializer
직렬 변환기는 C# 객체와 BSON 문서 간의 변환을 처리하는 클래스입니다. 직렬 변환기는 IBsonSerializer
인터페이스를 구현합니다. .NET/C# 드라이버에는 기본 유형, collection 유형 및 사용자 지정 클래스를 처리하기 위해 만들어진 많은 내장 직렬 변환기가 있습니다.
사용 가능한 직렬 변환기의 전체 목록은 직렬 변환기 네임스페이스 API 문서를 참조하세요.
Serializer 레지스트리
직렬화기 레지스트리에는 애플리케이션에서 사용할 수 있는 모든 등록된 직렬화기가 포함되어 있습니다. 대부분의 내장 직렬화기는 애플리케이션을 시작할 때 직렬화기 레지스트리에 자동으로 등록됩니다. 그러나 사용자 지정 직렬화기를 사용하려면 먼저 다음 예시와 같이 직렬화기 레지스트리에 직렬화기를 추가해야 합니다:
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
IBsonIdProvider 인터페이스는 및 메서드를 GetDocumentId()
SetDocumentId()
제공하며, 직렬화하려는 객체가 이외의 _id
유형을 사용하는 경우 ObjectId
유용합니다.
IBsonDocumentSerializer
IBsonDocumentSerializer 구현 인터페이스를 사용하면 드라이버가 직렬화하려는 객체의 멤버 정보에 액세스할 수 있습니다. 이를 통해 드라이버는 사용자 지정 직렬 변환기를 사용할 때 형식이 안전한 쿼리를 올바르게 구성할 수 있습니다.
IBsonArraySerializer
IBsonArraySerializer 구현 인터페이스를 사용하면 드라이버가 배열의 개별 항목에 대한 직렬화 정보에 액세스할 수 있습니다.
추가 정보
.NET/C# 드라이버를 사용하여 C# 객체를 직렬화하는 방법에 대해 자세히 알아보려면 다음 페이지를 참조하세요.
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.