前提・実現したいこと
C#のジェネリックメソッドについて質問があります。
ジェネリックメソッド内で、別のジェネリックメソッドを呼び出すことは可能でしょうか。
背景
1.sqlite-net-pclを使用。
2.1つのDBに対応するように1つのクラスを作成。
3.DBから全データを取得するメソッドを各クラスに記述したい。
4.共通部分は「DBhandler」というクラスを作って、そのメソッドを利用したい。
5.4の方法として、ジェネリックメソッド内で、別のジェネリックメソッドを呼び出そうと考えました。
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using SQLite; 4 5namespace Project.Objects 6{ 7 class DBhandler 8 { 9 public static List<T> GetAllData<T>(string databasePath) 10 { 11 using (var connection = new SQLiteConnection(databasePath)) 12 { 13 connection.CreateTable<T>(); 14 return connection.Table<T>().ToList(); 15 } 16 } 17 } 18}
下の2文について
connection.CreateTable<T>(); return connection.Table<T>().ToList(); ```この2文のTに、
public static List<T> GetAllData<T>(string databasePath)
どうすれば実現できますでしょうか。 呼び出し 例えばPersonというクラスでは、以下のように使用したいです。 ```C# public static List<Person> GetAllData() { return DBhandler.GetAllData<Person>(databasePath); }
発生している問題・エラーメッセージ
'T' は、ジェネリック型またはメソッド 'SQLiteConnection.Table<T>()' 内でパラメーター 'T' として使用するために、パブリック パラメーターなしのコンストラクターを持つ非抽象型でなければなりません
補足情報(FW/ツールのバージョンなど)
sqlite-net-pclを使用しています
回答1件
あなたの回答
tips
プレビュー