【发布时间】:2013-03-17 03:00:46
【问题描述】:
我必须使用给定的类"QueryGenerator",它由用户使用 StringConnection 和提供程序从选定的表和列生成动态查询。无论如何,我不必知道该类的实现,但我必须使用它并且我是股票。
最后,"QueryGenerator" 将结果查询作为对象返回,我唯一知道(因为我在类上使用 Reflector)是我可以对该查询结果执行 IQueryable 强制转换。这是一个例子:
var result = (IQueryable)myQueryGenerator.Result;
为了知道result的内容,我必须使用反射。
那么,有没有更好的方法来找出result 的内容,例如,用它填充一个DataSet?
【问题讨论】:
-
很多东西都实现了
IQueryable,它本身对于处理实际数据并不是一个非常有用的接口。您需要知道数据的实际类型。尝试调用result.GetType()来查找对象的 实际 类型并改为使用它。 -
不确定这是否会有所帮助,因为它很可能会根据查询的内容返回匿名类型,我认为您将陷入反射。
-
@David 据我们所知,它也可以返回一个 DataTable(它实现了 IQueryable)。除非 Robin 能给我们更多关于返回类型的信息,否则我们只是在黑暗中刺痛。
-
@Corey 这就是我说你坚持反射的原因......
-
@David 不一定。反思以发现他正在处理的实际类型,当然,但只是作为开发的东西。如果他知道它返回的具体类型(假设它不是泛型),那么他可以针对该类型进行编码。取决于它是什么类型:)
标签: c# reflection dataset iqueryable