직렬화
이 페이지의 내용
개요
이 가이드에서는 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>();
중요
직렬 변환기 레지스트리는 글로벌 레지스트리입니다. 즉, 단일 애플리케이션에서 여러 개의 레지스트리를 사용할 수 없습니다.
사용자 지정 직렬 변환기
사용자 지정 직렬 변환기를 만들려면 IBsonSerializer
기본 클래스를 구현 ValueType
멤버를 설정하다 다음 Deserialize()
및 Serialize()
메서드를 재정의합니다.
다음 코드 예시에서는 사용자 지정 BsonRegularExpression
직렬 변환기를 보여줍니다.
class CustomRegularExpressionSerializer : IBsonSerializer { public Type ValueType => typeof(Regex); public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { var type = context.Reader.CurrentBsonType; 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 void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) { var regex = (Regex) value; context.Writer.WriteRegularExpression(regex); } }
옵트인 인터페이스
.NET/C# 드라이버에는 직렬 변환기가 처리하는 데이터 유형에 따라 사용자 지정 직렬 변환기 클래스가 구현할 수 있는 몇 가지 선택적 인터페이스가 있습니다.
IBsonIdProvider
IBsonIdProvider 인터페이스는 및 메서드를 GetDocumentId()
SetDocumentId()
제공하며, 직렬화하려는 객체가 이외의 _id
유형을 사용하는 경우 ObjectId
유용합니다.
IBsonDocumentSerializer
IBsonDocumentSerializer 구현 인터페이스를 사용하면 드라이버가 직렬화하려는 객체의 멤버 정보에 액세스할 수 있습니다. 이를 통해 드라이버는 사용자 지정 직렬 변환기를 사용할 때 형식이 안전한 쿼리를 올바르게 구성할 수 있습니다.
IBsonArraySerializer
IBsonArraySerializer 구현 인터페이스를 사용하면 드라이버가 배열의 개별 항목에 대한 직렬화 정보에 액세스할 수 있습니다.
컨벤션
규칙 팩을 사용하면 운전자 직렬화 중에 사용하는 클래스와 해당 멤버에 규칙을 정의하고 적용 할 수 있습니다. 규칙은 각 클래스를 속성으로 장식하지 않고도 C# 객체와 MongoDB 문서 간에 데이터를 매핑하는 방법을 지정합니다.
.NET/ C# 드라이버 직렬화 프로세스 사용자 지정하는 데 사용할 수 있는 내장 규칙을 제공합니다. 다음 표에서는 몇 가지 내장 규칙에 대해 설명합니다.
컨벤션 | 설명 |
---|---|
직렬화 및 역직렬화 중에 요소 이름을 카멜 표기법으로 변환합니다. | |
직렬화 및 역직렬화 중에 열거형 값을 지정된 표현으로 변환합니다. | |
역직렬화 중에 문서 의 예비 요소를 무시할지 여부를 지정합니다. | |
객체 직렬 변환기를 사용하여 직렬화할 수 있는 유형을 지정합니다. |
사용 가능한 규칙의 전체 목록을 보려면 API 설명서에서 규칙 클래스 참조를 확인하세요.
다음 예시 와 같이 지정된 규칙을 사용하여 ConventionPack
를 인스턴스화한 다음 ConventionRegistry.Register()
메서드에 전달하여 규칙을 등록할 수 있습니다.
var camelCaseConvention = new ConventionPack { new CamelCaseElementNameConvention() }; ConventionRegistry.Register("CamelCaseConvention", camelCaseConvention, t => true);
추가 정보
.NET/C# 드라이버를 사용하여 C# 객체를 직렬화하는 방법에 대해 자세히 알아보려면 다음 페이지를 참조하세요.
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.