老实说,我之前讨厌disscussed扩展方法。
我的扩展方法为“ApplySorting”
public static IQueryable<Brand> ApplySorting(this IQueryable<Brand> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
它已经为IQueryable<Brand>
实现了它看起来很不错。我需要另一种类别的方法,我应该实现另一种方法IQueryable<Category>
这个故事。
问题;如何定义IQueryable<T>
以停止重复的扩展方法?
它应该看起来像这样(当然它不是有效的代码VS 2010停止了我。)
public static IQueryable<T> ApplySorting(this IQueryable<T> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
where T : IEntity
提前致谢! :)
答案 0 :(得分:4)
您需要使用方法泛型才能拥有通用参数。
换句话说,这将有效:
public static IQueryable<T> ApplySorting<T>(this IQueryable<T> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
where T : IEntity
(请注意,<T>
出现在方法名称中)
所有LINQ扩展方法都是以这种方式定义的,但在大多数情况下,由于类型推断,传递具体类型是可选的,这就是为什么很容易错过它。
答案 1 :(得分:4)
试试这个:
public static IQueryable<T> ApplySorting<T>(this IQueryable<T> data,
IList<GroupDescriptor> groupDescriptors,
IList<SortDescriptor> sortDescriptors)
where T : IEntity
(我在方法中添加了一个类型变量)