我对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();
}