//In a Static class ,extension implementation
public static IQueryable<T2> ToDTO<T, T2>(this IQueryable<T> source)
{
return source.To<T2>();
}
//Usage
var result = personType1Queryable.ToDTO< personType1, personType2>();
在上面的代码中,您可以看到它的扩展。它将一种类型转换为另一种类型。所以首先这个引用的对象是 personType1Queryable 类型的IQueryable<personType1>我只想这样调用这个函数;
personType1Queryable.ToDTO<personType2>();
我只想传递目的地类型。因为这个引用的对象已经通过了。但是编译器不接受这个为什么?对于 Linq 中的 Where < T > 扩展,它可以工作。对我来说为什么不呢?
编辑:我应用了艾伦的回答。但它似乎仍然缺少一些东西。
//works
public static IQueryable<T2> ToDTO<T,T2>(this IQueryable<T> source)
{
return source.Project().To<T2>();
}
//gives object reference error. Shown below!
public static IQueryable<T> ToDTO<T>(this IQueryable<object> source)
{
return source.Project().To<T>();
}