C#编程时遇到如下错误:
错误 3 不能将类型“T”用作泛型类型或方法“XXX”中的类型形参“T”。没有从“T”到“XXX”的装箱转换或类型形参转换
代码如下:
public List<T> getData<T>(string queryID, string version, int startPage, int perPageRowCount) where T:BaseEntity
{
QueryMessageParam param = new QueryMessageParam();
param.QueryID = queryID;
param.Version = version;
int startRow = (startPage - 1) * perPageRowCount + 1;
int endRow = startRow - 1 + perPageRowCount;
param.Add("STARTROW", startRow.ToString());
param.Add("ENDROW", endRow.ToString());
var list = PageDataService.getInstance().GetPageData<T>(param);
return list;
public List<T> getData<T>(string queryID, string version)
{
int startPage = 1;
int perPageRowCount = int.Parse(this.comRowsPerPage.Text);
//此处调用报错
return this.getData<T>(queryID, version, startPage, perPageRowCount);
}
原因:
第二个方法没有添加泛型约束,正确代码如下:
public List<T> getData<T>(string queryID, string version) where T:BaseEntity
{
int startPage = 1;
int perPageRowCount = int.Parse(this.comRowsPerPage.Text);
//此处调用报错
return this.getData<T>(queryID, version, startPage, perPageRowCount);
}