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

Getting 'T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method

我是 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' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'SQLiteAsyncConnection.Table<T>()'

我一直在经历这个Generic in C#,但我很难理解

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

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