加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:16:42 所属栏目:百科 来源:网络整理
导读:我很生气,因为我想从另一个通用方法调用泛型方法.. 这是我的代码: public ListY GetListY( string aTableName,bool aWithNoChoice){ this.TableName = aTableName; this.WithNoChoice = aWithNoChoice; DataTable dt = ReturnResults.ReturnDataTable("spp_
我很生气,因为我想从另一个通用方法调用泛型方法..

这是我的代码:

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()约束.它当然需要,因为它创建了这种类型的实例来填充返回的列表.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读