Как привести IQueryable к IQueryable <T>, когда я не знаю Т заранее? - PullRequest
0 голосов
/ 25 ноября 2010

У меня есть представление asp.net mvc, которое использует сетку Telerik.

Html.Telerik.Grid(Model.Items)

Model.Items IQueryable, но Сетка требует, чтобы я разыграл ее:

Например:

Html.Telerik.Grid((IQueryable<Product>)Model.Items)

Проблема в том, что я не знаю, какой тип содержится в Model.Items (это могут быть IQueryable<Product>, IQueryable<Book> и многие другие).

У меня также есть Model.ItemsType, который может иметь следующие значения: typeof(IQueryable<Product>), typeof(IQueryable<Book>) ...

Как я могу привести IQueryable к IQueryable<T>, если я заранее не знаю тип T?

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

Вам понадобится использовать отражение, чтобы вызвать метод Grid, если вы не знаете T заранее, потому что нет способа сделать это во время компиляции.Если Model.Items на самом деле является IQueryable, вам не нужно приводить его;просто передайте его как параметр во время вызова на основе отражения (который все равно принимает все параметры как объект типа).

0 голосов
/ 23 декабря 2010

Возможно, вы можете попробовать связать с IEnumerable.Проверьте ' привязку к коллекции динамических объектов с помощью записи библиотеки кода MVC3 Razor .

0 голосов
/ 26 ноября 2010

Общие типы должны быть известны в во время компиляции , не определены в во время выполнения .

Какой тип Model.Items? Если он получен из IEnumerable<T>, то при условии, что у вас есть ссылка на System.Linq, вы сможете вызвать метод расширения AsQueryable().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...