簡體   English   中英

獲取“T”必須是具有公共無參數構造函數的非抽象類型,以便在泛型類型或方法中將其用作參數“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 ”必須是具有公共無參數構造函數的非抽象類型,才能將其用作泛型類型或方法“ SQLiteAsyncConnection.Table<T>() ”中的參數“ T

我一直在 C# 中通過這個泛型,但我很難理解

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM