获取'T'必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法中的参数'T'



我对C#有点陌生,我看过一些关于如何进行泛型处理的例子,但我找不到一个外行术语的例子

我会分享我想做什么,请用简单的语言输入,将不胜感激

static readonly Lazy<SQLiteAsyncConnection> lazyInitializer = new Lazy<SQLiteAsyncConnection>(() =>
{
return new SQLiteAsyncConnection(Constants.DatabasePath, Constants.Flags);
});
public static SQLiteAsyncConnection Database => lazyInitializer.Value;
public async Task<List<T>> GetItemsAsync<T>()
{
var data = await Database.Table<T>().ToListAsync();
return data;
//return Database.Table<TodoItem>().ToListAsync();
}

我收到一个错误

"T"必须是具有公共无参数构造函数的非抽象类型,才能在泛型类型或方法"SQLiteAsyncConnection.Table<T>()"中将其用作参数"T">

我一直在C#中学习这个Generic,但我很难理解

Table<T>的类型参数上有一个泛型类型约束。然后,您必须确保引入的任何要与Table<T>一起使用的新泛型类型参数都具有匹配(或更严格(的类型约束。这里是new()约束:

public async Task<List<T>> GetItemsAsync<T>() where T: new()
{
var data = await Database.Table<T>().ToListAsync();
return data;
//return Database.Table<TodoItem>().ToListAsync();
}

最新更新