我有一个功能,
public static IPagedResponse<T> GetPagedResponse<T, TAnon>(
this IQueryable<TAnon> query,
QueryableRequestMessage request)
where T : class
{
//...
}
我正在尝试将查询作为匿名类型的IQueryable
传递。
var query = _repository.All.Select(
i => new //anon type
{
i.Id,
i.Name,
}
);
var result = query.GetPagedResponse<EftInterfaceDto, ??????>(request);
问题是我不知道应该用??????
代替什么?它似乎无法推断它。使用.GetType()
或typeof()
的任何组合我尝试过,都失败了。
我尝试将函数更改为IQueryable<dynamic>
,但导致其他错误,表达式树中不允许使用动态。
HACK:
如果我将功能更改为此功能,我可以使其正常工作:
public static IPagedResponse<T> GetPagedResponse<T, TAnon>(
this IQueryable<TAnon> query,
QueryableRequestMessage request,
T typeSample)
where T : class
{
//...
}
然后传入T
var result = query.GetPagedResponse(request, new SomeClassOfT());
这样,我可以使用类型推断来确定匿名类型TAnon
,并且在调用泛型时不需要明确(不需要<types>
)。
然而,我不想这样做,因为我显然不清楚我在做什么。