Как использовать пользовательский десериализатор, но использовать сериализатор по умолчанию в MongoDB .NET Driver 2.7 - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь написать собственный десериализатор для одного из моих типов данных.Но я хотел бы использовать сериализатор по умолчанию для сериализации в базу данных.

Читая документы MongoDB, я должен реализовать SerializerBase<MyType>, что я и сделал.По сути, я пытаюсь добиться этого:

public class MySerializer : SerializerBase<MyType>
{
    public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, MyType value)
    {
        // Use the default serializer here, don't have to do 
        // anything special for this
    }

    public override MyType Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
    {
        // Implemented my custom deserialization here. No issues here
    }
}

Если я не переопределю метод Serialize, я получу исключение, что MyType не может быть сериализовано MySerializer, поэтому нетвариант, но переопределить.

Я понимаю, что могу просто преобразовать value в сериализованную строку, а затем просто вызвать context.Writer.WriteString(jsonstring), но я не уверен, является ли это рекомендуемым подходом или существует либолее производительный вариант.Вот почему я хотел бы просто использовать то, что MongoDB по умолчанию делает для сериализации.

...