我試圖擴展一個已經有返回類型的方法。例如:擴展一個返回類型的方法
IQueryable<int> GetCategoryIds()
所以,我可以用這個如下:
IQueryable<int> categories = GetCategoryIds();
而且目前我正在做:
IQueryable<int> categories = GetCategoryIds().Select(c => new Client() { ClientId == c.clientId });
這工作,但我不希望這樣做Select
聲明。我寧願做一個擴展方法,除了type
,所以我可以在擴展方法中使用反射來確定類型等,並返回結果。擴展方法是這樣的:
public static IQueryable<T> LovelyExtension(this T objectType, int clientId)
然後我就可以使用這個擴展名狀(希望):
IQueryable<int> categories = GetCategoryIds().LovelyExtension<int>(1);
這可能嗎?當我嘗試它時,我得到一個錯誤,因爲GetCategoryIds
返回類型與擴展方法不一樣。但是,這適用於Select
聲明。
你選擇的版本沒有任何意義 - 它應該返回的IEnumerable'',不'名單',所以你分配給'categories'應編譯失敗... –
2012-04-17 13:50:46