c# - 获取“T”必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法中将其用作参数“T”
问题描述
我对 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
”必须是具有公共无参数构造函数的非抽象类型,才能T
在泛型类型或方法“ ”中将其用作参数“SQLiteAsyncConnection.Table<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();
}
推荐阅读
- c# - 如何将 URL 插入锚点 href ASP.NET MVC
- sql-server - SQL Count 每月出现多次并按月聚合的记录数
- selenium - RestAssured - 使用 Selenium 和 Test NG 测试 Restful API - 运行时抛出连接超时错误
- c++ - 将 QString 转换为浮点数会给我错误
- regex - 如何减少这种 grep 重复?
- java - 如何在不可变生成类中禁用@Generated 注释?
- sql - 在 redshift 中使用正则表达式和 casestatements 语句
- c++ - Clang 生成 7 次比较的代码比 8 次比较差
- python - 为什么当有换行符时,python 无法跳过 csv 中的第一行?
- c++ - 如何直观地看到 RSU 的范围?