//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>擴展。 對我而言,爲什麼不呢?
編輯:我申請了Eren的答案。但它似乎仍然缺少一些東西。
//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>();
}
http://i.stack.imgur.com/9Yh6H.png
什麼是編譯器錯誤。 – 2013-02-08 14:34:23
http://blog.slaks.net/2010/12/partial-type-inference-in-net.html – SLaks 2013-02-08 14:34:30
@EliGassert:沒有過載有1個通用參數。 – SLaks 2013-02-08 14:35:05