C# 如何在C中扩展泛型类并返回泛型类#

C# 如何在C中扩展泛型类并返回泛型类#,c#,generics,extension-methods,C#,Generics,Extension Methods,我有一个通用类 public class PagedData<T> where T : class { public IEnumerable<T> Data { get; set; } public int CurrentPage { get; set; } public int TotalRowCount { get; set; } public int RowsPerPage { get; set; }

我有一个通用类

public class PagedData<T> where T : class
{
        public IEnumerable<T> Data { get; set; }
        public int CurrentPage { get; set; }
        public int TotalRowCount { get; set; }
        public int RowsPerPage { get; set; }
        public int NumberOfPages { get; set; }
}
公共类页面数据,其中T:class
{
公共IEnumerable数据{get;set;}
public int CurrentPage{get;set;}
公共int TotalRowCount{get;set;}
public int RowsPerPage{get;set;}
公共int NumberOfPages{get;set;}
}
我将扩展上面的类,如下所示

public static PagedData<T> PagedResult<T>(this List<T> list)
{
     //some logic and return result as type PagedData<T>
     return null;
}
公共静态页面数据页面结果(此列表)
{
//某些逻辑和返回结果的类型为PagedData
返回null;
}
但它显示了一个buld错误,比如

类型“T”必须是引用类型才能将其用作参数 泛型类型或方法“MyApplication.PagedData”中的“T”

请告诉我一个解决方案。
由于类
PagedData
对类型参数
T
有一个约束,因此您必须在自己的方法上显式复制该约束:

public static PagedData<T> PagedResult<T>(this List<T> list) where T : class
{
     //some logic and return result as type PagedData<T>
     return null;
}
publicstaticpageddatapagedresult(此列表),其中T:class
{
//某些逻辑和返回结果的类型为PagedData
返回null;
}

如果不执行此操作,则“可能”调用
PagedResult
,但不可能返回
PagedData
——这就是编译器抱怨的原因。

因为类
PagedData
对类型参数
t
有约束,您必须在自己的方法上显式复制该约束:

public static PagedData<T> PagedResult<T>(this List<T> list) where T : class
{
     //some logic and return result as type PagedData<T>
     return null;
}
publicstaticpageddatapagedresult(此列表),其中T:class
{
//某些逻辑和返回结果的类型为PagedData
返回null;
}
如果不这样做,“可能”调用
PagedResult
,但不可能返回
PagedData
——这就是编译器抱怨的原因