MongoDB的C#官方驱动InvalidOperationException异常的解决办法
2014-09-07 23:03
453 查看
异常情况描述
有一个“文章”类,其中包含一个“List<段落>”类型的属性,“段落”类是抽象类,其子类有“副标题段落”、“文本段落”、“图像段落”、“附件段落”、“列表段落”等类型。将“文章”类型的对象存入MongoDB数据库完全没问题,但是从数据库取回则会引发这样的异常:
[InvalidOperationException: 无法创建抽象类的实例。]
解决方法
之前曾就此问题向 magicDict 请教过,他给出的办法是参照这篇博文:/article/5338281.html我没有进行实测,因为同时我找到一个貌似更简便的方法:
1.在段落类的头部标注特性:
[BsonKnownTypes(typeof(文本段落), typeof(列表段落), typeof(副标题段落), typeof(附件段落), typeof(图像段落))]
2.在实例化MongoClient之前声明:
BsonClassMap.LookupClassMap(typeof(MongoModels.段落));
如此便可完美解决此问题。
总结
除了这种包含抽象类型属性的情况,对于一个集合中默认类型为抽象类型的情况也适用此解决方法。接口未进行测试,印象中也会报同样错误,猜想解决方法应该也是如此。
需注意的是,此方法仅适合于你可以修改源代码的情况,那篇 magicDict 推荐的文章的解决方法在不能修改源代码的情况下也可用。
相关文章推荐
- Linq的sum函数InvalidOperationException异常解决办法
- C#之解决 未处理的“System.InvalidOperationException”类型的异常出现在 System.dll中...
- 异常详细信息: System.InvalidOperationException: 对象的当前状态使该操作无效 真正的解决办法
- C#之解决 未处理的“System.InvalidOperationException”类型的异常出现在 System.dll中...
- java.lang.UnsupportedOperationException异常解决办法
- 异常:System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms 这个实现是不是Windows平台FIPS验证的加密算法。解决方法
- Delphi的"Invalid pointer operation"异常的解决办法 (转)
- ASP.NET CORE MVC 2.0 项目中引用第三方DLL报错的解决办法 - InvalidOperationException: Cannot find compilation library location for package
- [C#] 引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 解决办法
- 【转】Delphi的"Invalid pointer operation"异常的解决办法
- C# ServerVersion = “Conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常
- Delphi的"Invalid pointer operation"异常的解决办法
- C#中webBrowser加载页面中访问不同域的iFrame引发System.UnauthorizedAccessException异常的解决办法
- C# ServerVersion = “Conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常
- “Invalid pointer operation"异常的解决办法
- 异常详细信息: System.InvalidOperationException: 内部连接致命错误(已解决)
- 困扰:C#.net 连接Oracle11g 不报错但是在connection时出现 ServerVersion 引发了“System.InvalidOperationException”类型的异常
- hibernate异常:org.springframework.dao.InvalidDataAccessApiUsageException解决办法
- NHibernate.InvalidProxyTypeException 异常的解决办法
- Delphi的"Invalid pointer operation"异常的解决办法