我试图扩展一个已经有返回类型的方法。例如:扩展一个返回类型的方法
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