我使用组件" SQLite.NET"在我的Xamarin项目中。 我有几个"模型/类"喜欢" Document"," Project"。 每个模型在SQLite中都有自己的表。
要从表中获取数据,请使用以下技术:
List<Document> documents = new SQLiteConnection("..DB-path..").Table<Document>.ToList();
它工作正常,但对于每个表,我必须执行相同的代码,只更改上面代码中的Model-type。
现在我想写一个通用方法,我可以这样做:
List<T> data = new SQLiteConnection("..DB-path..").Table<T>.ToList();
但不幸的是,我收到以下错误:
&#39; T&#39;必须是具有公共无参数构造函数的非抽象类型才能将其用作参数&#39; T&#39;在泛型类型或方法&#39; SQLiteConnection.Table()&#39;
有没有人知道为上述问题创建通用方法的方法?
提前致谢!
答案 0 :(得分:3)
你应该为你的功能添加约束。
public List<T> GetData<T> () where T: new()
{
using(var connection = new SQLiteConnection("..DB-path..")){
return connection.Table<T>.ToList();
}
}
不要忘记丢弃数据库连接!