泛型和匿名类型

时间:2013-02-04 17:46:22

标签: c#-4.0 generics anonymous-types

我有一个功能,

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>)。

然而,我不想这样做,因为我显然不清楚我在做什么。

0 个答案:

没有答案