Десериализация поля при изменении типа с помощью драйвера MongoDb csharp

Я тестирую несколько сценариев с MongoDb, чтобы посмотреть, как восстановиться после возможных проблем с данными.

У меня есть классы (адреса с набором адресов) со свойством почтового индекса в адресе, который изначально был преобразован в строку. Я сохранил несколько записей адресов и смог их восстановить. нравится, var allAddresses = address.FindAllAs();

Я изменил свойство почтового индекса на int и сохранил некоторые записи. Затем я изменил свойство почтового индекса обратно на строку.

Когда я пытаюсь прочитать коллекцию обратно, я получаю сообщение об ошибке десериализации, как и ожидалось. var allAddresses = address.FindAllAs();

Моя цель — переопределить десериализацию, чтобы в случае возникновения ошибки десериализации поля я мог либо игнорировать ее, либо применить значение по умолчанию.

Я попробовал собственный сериализатор, но он не работает. Мы ценим любые предложения.

public class MyCustomSerializer : BsonBaseSerializer
  {

    public override object Deserialize(BsonReader bsonReader, Type nominalType,  IBsonSerializationOptions options)
    {
      if (bsonReader.CurrentBsonType != BsonType.String)
      {
        return string.Empty;
      }

      return bsonReader.ReadString();
    }

    public override void Serialize(
               BsonWriter bsonWriter,
               Type nominalType,
               object value,
               IBsonSerializationOptions options)
    {
      bsonWriter.WriteStartDocument();
      bsonWriter.WriteName("ZipCode");
      bsonWriter.WriteString(value.ToString());
      bsonWriter.WriteEndDocument();
    }
  }
9
задан user1329380 12 April 2012 в 14:46
поделиться