//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>();
}