MongoDB,C#,反射,动态执行

时间:2015-09-20 05:15:02

标签: c# mongodb reflection

Ian Mercer,这不是重复,因为你标记了... 2个不同的动物..很多mongodb c#驱动程序中的所有东西都是通用的,在我的情况下,所有的东西(doc,poco等类型)都是仅在运行时知道...

我正在尝试使用c#/ .net驱动程序构建一个通用(字面)函数来从MongoDB中的集合中获取结果。我们都知道驱动程序中的所有内容都是GENERIC。使用Reflections和MakeGenericMethod来实现这些。

到目前为止,我已经达到了执行相当于MOngoDatabase.GetCollection'的目的。下面是我的代码...我被困在最后n个(可能)collection.FindAsync方法。

var method_info = typeof(IMongoDatabase).GetMethod("GetCollection" );
var method_ref = method_info.MakeGenericMethod(poco_type);

object[] method_arguments = new object[] { collectionName,null };
var  collection = method_ref.Invoke(_db,  method_arguments);

MethodInfo collection_method = collection.GetType().GetMethod("FindAsync");

var collection_method_ref = collection_method.MakeGenericMethod(poco_type);

var filter_obj = new BsonDocument(filter);

method_arguments = new object[] { filter_obj,null,null };

**var result = collection_method_ref.Invoke(collection, method_arguments);**

我在上面的代码行中出错...错误是

“类型'MongoDB.Bson.BsonDocument'的对象无法转换为类型
'MongoDB.Driver.FilterDefinition`1 [System.RuntimeType]'“。

我做错了什么?我似乎无法走得更远。 这甚至可能吗?

非常感谢...

0 个答案:

没有答案