小编ral*_*ign的帖子

错误:'T'必须是具有公共无参数构造函数的非抽象类型才能将其用作参数'T'

我正在尝试实现一个接受泛型T并返回T列表的方法.

    public static List<T> GetMessages<T>(string query, int count, SqlConnection sqlconnection)
        where T : ITable, new()
    {
        List<T> messages = new List<T>();
        List<T> errorMessages = new List<T>();

        DataSet response = DBUtils.ExecuteQueryScriptWithConnection(query, sqlconnection);

        for (int i = 0; i < response.Tables[0].Rows.Count; ++i)
        {
            T message = new T();

            DataRow row = response.Tables[0].Rows[i];
            message.Id = Convert.ToInt32(row[0]);
            message.CreatedDate = Convert.ToDateTime(row[1]);                
        }

        return messages;
    }
Run Code Online (Sandbox Code Playgroud)

但是当我从另一个方法调用它时,我收到错误:

'T'必须是带有公共无参数构造函数的非抽象类型,才能在泛型类型或方法' CIHelpers.TableHelpers.GetMessages<T>(string, int, System.Data.SqlClient.SqlConnection)' 中将它用作参数'T '

我称之为的代码:

      List<T> messages = TableHelpers.GetMessages<T>(query, 1000, sqlconnection);
Run Code Online (Sandbox Code Playgroud)

实现ITable的类(我传递的类型T就在这里.

public class MessageReceived : …
Run Code Online (Sandbox Code Playgroud)

c# generics

4
推荐指数
1
解决办法
7067
查看次数

标签 统计

c# ×1

generics ×1