使用Mongo驱动程序2升级IBsonSerializer

往前

Mongo驱动程序的旧实现导致了这种代码:

public object Deserialize(BsonReader bsonReader, Type nominalType, Type actualType)
{
    if (nominalType == typeof(T))
    {
        if (typeof(V) == typeof(string))
            return _deSerializeFunc(bsonReader.ReadString());
        else if (typeof(V) == typeof(int))
            return _deSerializeFunc(bsonReader.ReadInt32());
        else if (typeof(V) == typeof(double))
            return _deSerializeFunc(bsonReader.ReadDouble());
        else if (typeof(V) == typeof(decimal))
            return _deSerializeFunc((decimal)bsonReader.ReadDouble());
    }
    return null;
}

新界面完全不同。如何使用此新接口开始实施先前的代码?

public object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
罗伯特·斯坦

在.NET驱动程序的2.0版本中,我们需要将更多信息传递给序列化程序。我们没有将更多参数添加到方法中,而是将参数打包为两个新参数。context参数保存对于整个序列化操作应恒定的值,而args参数保存在序列化复杂类型时在每个级别上更改的值。

移植到新设计应该相对容易:

  1. 现在,reader参数处于上下文中。
  2. 标称类型参数现在位于args.NominalType中
  3. ActualType参数已消失

关于actualType,现在,每个序列化程序都有责任确定实际类型(使用所需的任何约定),并在实际类型不同于标称类型时查找并委托给实际的序列化程序。如果您要序列化的类不是多态的,则标称类型和实际类型始终始终相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

15.10升级后无法启动[AMD图形驱动程序问题]

来自分类Dev

Radeon专有驱动程序,并从14.04升级到16.04

来自分类Dev

从13.10升级到14.04 LTS后,Intel驱动程序不会仅加载镓0.4

来自分类Dev

从7升级到Windows 10后,在映像设备下找不到WEBCAM驱动程序

来自分类Dev

MongoDB C#驱动程序2.2.2 IBsonSerializer上的'ValueType'属性的用途是什么

来自分类Dev

如何使用Java驱动程序使用Mongo Bulk Update?

来自分类Dev

使用Scala Mongo驱动程序序列化为对象?

来自分类Dev

使用Java驱动程序获取Mongo Instance的版本

来自分类Dev

无法使用Scala驱动程序将数据插入mongo

来自分类Dev

使用本机驱动程序附加到mongo查询

来自分类Dev

使用Java mongo驱动程序从集合中删除对象

来自分类Dev

使用C#mongo驱动程序构建查询

来自分类Dev

使用Java的Mongo 3.2驱动程序的新聚合功能

来自分类Dev

Scala Mongo 驱动程序使用 Future 获取结果

来自分类Dev

NVIDIA驱动程序升级失败

来自分类Dev

将Rails应用程序从5.0.0.rc2升级到5.0.0

来自分类Dev

将Rails应用程序从5.0.0.rc2升级到5.0.0

来自分类Dev

在多台PC上使用相同的Windows 8升级安装程序

来自分类Dev

使用mongo Java驱动程序3.0+满足条件时替换mongo doc

来自分类Dev

为什么我的NodeJS程序打开与Mongo的多个连接(使用本机驱动程序)

来自分类Dev

为什么我的NodeJS程序打开与Mongo的多个连接(使用本机驱动程序)

来自分类Dev

Nvidia驱动程序问题,未使用驱动程序

来自分类Dev

尝试使用驱动程序安装升级时出现Installshield错误

来自分类Dev

尝试使用驱动程序安装升级时出现Installshield错误

来自分类Dev

在使用NVIDIA驱动程序的系统上手动升级内核是否安全?

来自分类Dev

使用专有的Nvidia驱动程序进行Debian升级

来自分类Dev

使用linux I2C驱动程序

来自分类Dev

使用免费驱动程序玩TF2

来自分类Dev

使用Java Mongo DB驱动程序使用MongoDB插入时出现重复密钥错误

Related 相关文章

  1. 1

    15.10升级后无法启动[AMD图形驱动程序问题]

  2. 2

    Radeon专有驱动程序,并从14.04升级到16.04

  3. 3

    从13.10升级到14.04 LTS后,Intel驱动程序不会仅加载镓0.4

  4. 4

    从7升级到Windows 10后,在映像设备下找不到WEBCAM驱动程序

  5. 5

    MongoDB C#驱动程序2.2.2 IBsonSerializer上的'ValueType'属性的用途是什么

  6. 6

    如何使用Java驱动程序使用Mongo Bulk Update?

  7. 7

    使用Scala Mongo驱动程序序列化为对象?

  8. 8

    使用Java驱动程序获取Mongo Instance的版本

  9. 9

    无法使用Scala驱动程序将数据插入mongo

  10. 10

    使用本机驱动程序附加到mongo查询

  11. 11

    使用Java mongo驱动程序从集合中删除对象

  12. 12

    使用C#mongo驱动程序构建查询

  13. 13

    使用Java的Mongo 3.2驱动程序的新聚合功能

  14. 14

    Scala Mongo 驱动程序使用 Future 获取结果

  15. 15

    NVIDIA驱动程序升级失败

  16. 16

    将Rails应用程序从5.0.0.rc2升级到5.0.0

  17. 17

    将Rails应用程序从5.0.0.rc2升级到5.0.0

  18. 18

    在多台PC上使用相同的Windows 8升级安装程序

  19. 19

    使用mongo Java驱动程序3.0+满足条件时替换mongo doc

  20. 20

    为什么我的NodeJS程序打开与Mongo的多个连接(使用本机驱动程序)

  21. 21

    为什么我的NodeJS程序打开与Mongo的多个连接(使用本机驱动程序)

  22. 22

    Nvidia驱动程序问题,未使用驱动程序

  23. 23

    尝试使用驱动程序安装升级时出现Installshield错误

  24. 24

    尝试使用驱动程序安装升级时出现Installshield错误

  25. 25

    在使用NVIDIA驱动程序的系统上手动升级内核是否安全?

  26. 26

    使用专有的Nvidia驱动程序进行Debian升级

  27. 27

    使用linux I2C驱动程序

  28. 28

    使用免费驱动程序玩TF2

  29. 29

    使用Java Mongo DB驱动程序使用MongoDB插入时出现重复密钥错误

热门标签

归档