我在下面有一个代码来创建绑定到gridview的集合,可以通过单击列标题进行排序。这里的问题是“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()
答案 0 :(得分:0)
在构建使用接口作为实体的自定义ORM时,我们遇到了同样的问题。您可以从这些来源https://github.com/acropolium/AcroDB/tree/master/AcroDB/QueryableProxy
中探索解决方案