gpt4 book ai didi

mongodb - MongoDB 驱动程序 v2.4.0 中 BsonBaseSerializer 的替换

转载 作者:可可西里 更新时间:2023-11-01 10:02:42 25 4
gpt4 key购买 nike

我们已将 MongoDB 驱动程序从 v1.9.3 迁移到 v2.4.0。我们使用了 BsonBaseSerializer,它在 v2.4.0 中不存在。 v2.4.0 中 BsonBaseSerializer 的替换是什么?

最佳答案

没有足够的问题来给出完整的答案,但您正在寻找的更改记录在 mongo 文档的序列化下。

http://mongodb.github.io/mongo-csharp-driver/2.4/reference/bson/serialization/#implementation-1

最大的变化是他们现在在基类上采用类型。

所以

V1 驱动代码

public class IntegerCoercion : BsonBaseSerializer
{
public override object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType, IBsonSerializationOptions options)
{
if (bsonReader.CurrentBsonType == BsonType.Int32)
{
return bsonReader.ReadInt32();
}
if (bsonReader.CurrentBsonType == BsonType.String)
{
var value = bsonReader.ReadString();
if (string.IsNullOrWhiteSpace(value))
{
return null;
}
return Convert.ToInt32(value);
}
bsonReader.SkipValue();
return null;
}

public override void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
if (value == null)
{
bsonWriter.WriteNull();
return;
}
bsonWriter.WriteInt32(Convert.ToInt32(value));
}
}

V2 驱动代码

public class IntegerCoercion : SerializerBase<object>
{
public override object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
if (context.Reader.CurrentBsonType == BsonType.Int32)
{
return context.Reader.ReadInt32();
}
if (context.Reader.CurrentBsonType == BsonType.String)
{
var value = context.Reader.ReadString();
if (string.IsNullOrWhiteSpace(value))
{
return null;
}
return Convert.ToInt32(value);
}
context.Reader.SkipValue();
return null;
}

public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value)
{
if (value == null)
{
context.Writer.WriteNull();
return;
}
context.Writer.WriteInt32(Convert.ToInt32(value));
}
}

差别不大,但与大多数驱动程序更改一样,它们很小但会中断。

关于mongodb - MongoDB 驱动程序 v2.4.0 中 BsonBaseSerializer 的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com