c# – 使用泛型方法调用泛型方法

我很生气,因为我想从另一个通用方法调用泛型方法..

这是我的代码

public List<Y> GetList<Y>(
                string aTableName,bool aWithNoChoice)
{
  this.TableName = aTableName;
  this.WithNoChoice = aWithNoChoice;

  DataTable dt = ReturnResults.ReturnDataTable("spp_GetSpecificParametersList",this);

  //extension de la classe datatable
  List<Y> resultList = (List<Y>)dt.ToList<Y>();

  return resultList;  
}

所以实际上当我调用ToList时,他是DataTable类的扩展(学到了Here)

编译器说Y不是非抽象类型,他不能将它用于.ToList<>通用方法..

我究竟做错了什么?

谢谢阅读..

解决方法

方法签名更改为:
public List<Y> GetList<Y>(
                string aTableName,bool aWithNoChoice) where Y: new()

您需要的原因是因为您使用的自定义扩展方法对其泛型类型参数强加了new()约束.它当然需要,因为它创建了这种类型的实例来填充返回的列表.

显然,您还必须使用泛型类型参数调用方法,该参数表示具有公共无参数构造函数的非抽象类型.

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString(&quot;x2&quot;));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable&lt;Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include &quot;WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...