2009-11-17 78 views
0

我正在使用反射与linq.Dynamic,并且我创建一个查询需要从IList<T>ISet<T>IQueryable<T>当我有一个对象时有一个小问题。我该如何向IList <T>哄一个物体?

起初,我以为我可以写一个小帮手方法:

object Helper<T>(IList<T> list, string query, param object[] values) 
{ 
... do query and return result. 
} 

不幸的是,编译器需要推断的T参数,它在传递一个对象时,它不能做的。
有没有一种简单的方法来解决这个问题?我试图避免动态调用这个帮助函数。

编辑: 我有一个域对象,目前作为几个IList集合,我试图查询这个类,以找到正确的对象显示在屏幕上。 基本上我有一个屏幕GUID 10和xpathish字符串“水果篮/果[成熟的==真] /彩色” 所以我知道水果是我的反射代码为IList我检查属性来看看它现在实现IList我我需要查询这个集合来挑选Fruit.Ripe == true对象。为此我需要一个演员IQuerable

回答

4

如果你只有object,你如何期望编译器知道什么T应该是什么?

您还没有表现出你是如何试图调用此方法...做知道(在编译时)的T类型应该是什么(甚至在给调用其他类型的参数方面方法)?如果不是你必须动态调用它。

这是object实际上IList<T>一些T?如果为两种不同类型实施IList<T>,会发生什么?

我建议你退后一步,制定出什么样的信息是真正在编译时已知,什么是只有在执行时知。调用泛型方法静态需要你知道在编译时的类型参数。

相关问题