teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

ゴミを削除

2021/05/06 15:15

投稿

draq
draq

スコア2577

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  ```C#
6
6
  public TableQuery<T> Table<T>() where T : new();
7
7
  ```
8
- となっていて、型パラメータ`T`に [new 制約]( があります。
8
+ となっていて、型パラメータ`T`に new 制約があります。
9
9
  この制約に反した場合に、
10
10
 
11
11
  > 'T' は、ジェネリック型またはメソッド 'SQLiteConnection.Table<T>()' 内でパラメーター 'T' として使用するために、パブリック パラメーターなしのコンストラクターを持つ非抽象型でなければなりません

1

修正箇所が漏れていたので修正

2021/05/06 15:15

投稿

draq
draq

スコア2577

answer CHANGED
@@ -5,11 +5,23 @@
5
5
  ```C#
6
6
  public TableQuery<T> Table<T>() where T : new();
7
7
  ```
8
- となっていて、型パラメータ`T`に [new 制約](https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/new-constraint) があります。
8
+ となっていて、型パラメータ`T`に [new 制約]( があります。
9
9
  この制約に反した場合に、
10
10
 
11
11
  > 'T' は、ジェネリック型またはメソッド 'SQLiteConnection.Table<T>()' 内でパラメーター 'T' として使用するために、パブリック パラメーターなしのコンストラクターを持つ非抽象型でなければなりません
12
12
 
13
13
  というエラーになります。
14
14
 
15
- エラーを解消するには、`Person`クラスにパブリックかつパラメータなしのコンストラクタの追加必要す。
15
+ エラーを解消するには、`Person`クラスにパブリックかつパラメータなしのコンストラクタの追加と、`DBhandler.GetAllData<T>()`の`T`型にnew制約をつける必要があります。
16
+
17
+ ```C#
18
+ class Person {
19
+ public Person() {}
20
+ }
21
+
22
+ class DBhandler {
23
+ public static List<T> GetAllData<T>(string databasePath) where T: new() {
24
+ //(省略)
25
+ }
26
+ }
27
+ ```