获取 '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();
}
我是 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();
}