通用类型的扩展方法

时间:2014-10-25 11:27:41

标签: c# generics extension-methods

如何为泛型类型创建扩展方法?

以下代码返回错误

  

扩展方法只能在非通用的非嵌套静态类

中声明

代码:

public static class PagedList<T> where T : BaseEntity
{
    public static IEnumerable<T> ToPagedList(this IEnumerable<T> source, int pageNumber = 0, int pageSize = 5)
    {
        return source.Skip(pageNumber * pageSize).Take(pageSize);
    }
}

任何进一步的实现都可以使这个工作吗?

2 个答案:

答案 0 :(得分:2)

直接在方法上指定泛型类型,并使类成为静态和非泛型的错误。

public static class PagedList
{
    public static IEnumerable<T> ToPagedList<T>(this IEnumerable<T> source, 
        int pageNumber = 0, int pageSize = 5) where T : BaseEntity
    {
        return source.Skip(pageNumber * pageSize).Take(pageSize);
    }
}

答案 1 :(得分:0)

您应该监听错误消息,您需要在非泛型类中声明扩展方法。