4

我在我的 Xamarin 项目中使用组件“SQLite.NET”。我有几个“模型/类”,如“文档”、“项目”。每个模型在 SQLite 中都有自己的表。

要从表中获取数据,我使用以下技术:

List<Document> documents = new SQLiteConnection("..DB-path..").Table<Document>.ToList();

它工作得很好,但是对于每个表,我必须执行相同的代码,并且只更改上面代码中的模型类型。

现在我想编写一个通用方法,我可以这样做:

List<T> data = new SQLiteConnection("..DB-path..").Table<T>.ToList();

但不幸的是,我收到以下错误:

“T”必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法“SQLiteConnection.Table()”中将其用作参数“T”

有谁知道为上述问题创建通用方法的方法?

提前致谢!

4

1 回答 1

3

您应该为您的功能添加约束。

public List<T> GetData<T> () where T: new()
{
    using(var connection = new SQLiteConnection("..DB-path..")){
       return connection.Table<T>.ToList();
    }
}

不要忘记处理您的数据库连接!

于 2016-03-29T12:06:06.743 回答