Как создать выражение (TDelegate), где тип делегата неизвестен во время компиляции? - PullRequest
1 голос
/ 21 сентября 2011

У меня есть код ниже, чтобы сделать коллекцию, привязанную к сетке, способной сортировать, нажав на заголовок столбца.Проблема здесь в том, что «IPerson» неизвестен во время компиляции.Я хочу, чтобы тип делегата мог быть определен из источника данных gridview.

Dim list As List(Of IPerson) = CType(Session("DataSource"), List(Of IPerson))
Dim dataType As Type = list.GetType.GetGenericArguments(0)
Dim param = Expression.Parameter(dataType, e.SortExpression)
Dim sortExpression = Expression.Lambda(
        Of Func(Of IPerson, Object))(
        expression.Convert(
            Expression.Property(param, e.SortExpression), GetType(Object)
            ), param)

GridView1.DataSource = list.AsQueryable.OrderBy(sortExpression)
GridView1.DataBind()

1 Ответ

0 голосов
/ 21 сентября 2011

У нас была такая же проблема при создании пользовательского ORM, который использует интерфейсы в качестве сущностей.Вы можете найти решение из этих источников https://github.com/acropolium/AcroDB/tree/master/AcroDB/QueryableProxy

...