无法创建抽象类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) { }
    }

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

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

最新文章

  1. PYTHON 文件操作
  2. ubuntu频繁掉线 转
  3. MySQL性能优化总结(转)https://yq.aliyun.com/articles/24249
  4. Git的安装和使用记录
  5. Cobar_基于MySQL的分布式数据库服务中间件
  6. 哈希-Gold Balanced Lineup 分类: POJ 哈希 2015-08-07 09:04 2人阅读 评论(0) 收藏
  7. JS App
  8. HDU 2571 命运 (DP)
  9. jcscriput
  10. Python设计模式——工厂方法模式(FactoryMethod)
  11. WITH AS and materialize hints
  12. CSS3之重新定义鼠标右键
  13. 前端制作篇之meta标签篇
  14. Bias and Variance 偏置和方差
  15. python的str()和repr()的区别
  16. IT题库8-死锁
  17. activiti-6.0工作流应用模板
  18. [JS]js中判断变量类型函数typeof的用法汇总[转]
  19. Android : 跟我学Binder --- (5) C++实现
  20. css 选择器二

热门文章

  1. Unity3D外包团队——技术分享U3D全景漫游(三)
  2. JavaScript引用方法说明
  3. java 线程数据同步
  4. eclipse 代码自动提示
  5. android C++环境搭建
  6. tomcat + apache +jkmod 配置php,jsp共存
  7. jsp配置项目时出错Deployment failure on Tomcat 6.x. Could not copy all resources to
  8. 安装 ppsycopg2报错, Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application
  9. C# .net ACCESS 网页增删改查 --留言板
  10. mysql Can&#39;t connet MySQL server to &#39;@localhost&#39;