2 つのステートメントのmyTypeは、非常に異なる役割を果たします。
public object sqlLeggi(string sql, Type myType){
ここでmyTypeは、 Type クラスTypeのインスタンスを参照するオブジェクトです。
var results = cmd.ExecuteQuery< myType > ();
これは、特定の型を参照する構文構造であり、この場合は実際にmyType名前が付けられます。 myType
現在、通常、この特定の問題を処理するには 2 つの方法があります。
- のオブジェクト型を見て、代わりにオブジェクト パラメーターを取る
cmdオーバーロードまたは代替メソッドがあるかどうかを確認します。ExecuteQueryType
Typeそもそもオブジェクトがないように、メソッドをジェネリックにします。
最初のケースは、おそらく次のように記述されます。
var results = cmd.ExecuteQuery(myType);
2 番目は次のようになります。
public myType sqlLeggi<myType>(string sql{
SQLiteCommand cmd = DB.CreateCommand(sql);
var results = cmd.ExecuteQuery< myType > ();
[..]
}
ご了承ください:
myType代わりにメソッドを返すようにしましたobject
myTypeメソッドのジェネリック パラメータとして指定されるようになりました。sqlLeggi<myType>
この場合の命名規則では、ジェネリック型パラメーターに名前を付けるTか、何かで始まるTようにする必要があるため、私のアドバイスは次のとおりです。
public T sqlLeggi<T>(string sql{
SQLiteCommand cmd = DB.CreateCommand(sql);
var results = cmd.ExecuteQuery<T>();
[..]
}