2009-11-17 76 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>,會發生什麼?

我建議你退後一步,制定出什麼樣的信息是真正在編譯時已知,什麼是隻有在執行時知。調用泛型方法靜態需要你知道在編譯時的類型參數。

相關問題