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();
    }
}

DB 接続を破棄することを忘れないでください。

于 2016-03-29T12:06:06.743 に答える