![](/img/trans.png)
[英]T must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'TModel' in the generic type or method
[英]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.