【发布时间】:2012-10-07 10:56:43
【问题描述】:
我有一本字典:
Dictionary<int, Type> AllDrillTypes = new Dictionary<int, Type>()
{
{13,typeof(TCHEMISTRY)},
{14,typeof(TDRILLSPAN)}
};
其中 TCHEMISTRY 和 TDRILLSPAN 是类。然后我想从这样的一个类中获取行:
Type T = AllDrillTypes[13];
var LC = Activator.CreateInstance( typeof(List<>).MakeGenericType( T ) );
MethodInfo M = T.GetMethod("FindAll", BindingFlags.Public | BindingFlags.Static, null, new Type[] { }, null);
LC = M.Invoke(null, new object[] { });
所有这些代码都可以正常工作。之后我需要得到一些这样的行:
var LingLC = from obj in LC where obj.RunID == 1001 select obj;
但是这一行会导致错误:
"找不到源类型的查询模式的实现 '目的'。 '哪里'没有找到。”
这行代码有什么问题?
【问题讨论】:
-
您能指定您遇到的错误类型吗?这将有助于回答您的问题!
-
您确定要以这种方式使用反射吗?
-
错误文本是“找不到源类型'object'的查询模式的实现。找不到'Where'。”
-
如果您使用反射来创建通用对象,您如何期望您的编译器 知道将
obj解析为什么类型? =) -
当你在 TChemistry 类上调用 FindAll 方法时,它返回什么?收藏?收藏的类型是什么?如果是 List
,则必须在使用 Linq 之前将 LC 转换为 List 。