• MongoDB 无法创建抽象类的问题,


     无法创建抽象类BsonClassMap.RegisterClassMap

    大家都知道抽象类是无法实例化的,即:不能new。

    在以下这些情况会遇到这种问题:

    1.基类是抽象类:

    2.基类是接口:

    由于mongodb的特性,在保存抽象类或接口的子类时,会自动映射一个字段"_t":即:子类名称;但是当读取的时候,必须创建子类的,但是由于不知道是那个子类,于是会创建基类的实例,由于基类是抽象类或接口,所以无法创建。

    解决方案啊如下:

    我们能遇到的总有人已经遇到过了,所以经常总结一下自己遇到的问题,方便后人,一代传一代。

    mongodb就已经为我们想到了:

    命名空间:MongoDB.Bson.Serialization;

    主要类:BsonClassMap;

    主要方法:RegisterClassMap;

     BsonClassMap.RegisterClassMap<T>();

    注意:

    当你无法确定T类型的时候可以如下做法:

      foreach (var type in types)
                {
                    bool isRegist = BsonClassMap.IsClassMapRegistered(type);
                    if (isRegist) continue;
                    BsonClassMap.RegisterClassMap(new ClassMap(type));
                }

    自定义一个类继承BsonClassMap

    主要是继承它的构造函数;

      public class ClassMap : BsonClassMap
        {
            public ClassMap(Type classType) : base(classType) { }
        }

    一个问题的解决方法不止一种,所以尝试用各种方式解决一道题,这样才会提升。

    欢迎各位提出更好的解决方案,谢谢!

  • 相关阅读:
    TCP/IP协议栈之QEMU
    FreeRTOS-Plus-CLI中添加一个自己的命令行
    FreeRTOS A57
    log日志库
    函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt
    Makefile 使用小结
    41. 缺失的第一个正数(First Missing Positive)
    42. 接雨水(Trapping Rain Water)
    关于C++内联和静态成员函数的问题
    C++11 线程并发问题
  • 原文地址:https://www.cnblogs.com/zlp520/p/3921435.html
Copyright © 2020-2023  润新知