zoukankan      html  css  js  c++  java
  • 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) { }
        }

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

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

  • 相关阅读:
    day46 mysql进阶
    解决:ping github.com遇到“请求超时”
    修改hosts文件
    Python正课135 —— 基础扩展1
    Python正课136 —— 基础扩展2
    05 树莓派安装Python3.6
    一次可以面向百度的笔试
    作业23
    获取类名和方法名
    面向对象三大特性之继承
  • 原文地址:https://www.cnblogs.com/zlp520/p/3921435.html
Copyright © 2011-2022 走看看