SQLite データベース内のさまざまなテーブルをループして、同じアクションを実行したいと考えています。Table の T は、テーブル名と一致するクラス名を想定し、そのテーブル内のデータのコンテナーとして機能します。私はこのようなことをしたい:
For each table in TableList:
Check common data in table
Update as needed
コードがどのように見えるかのアイデアは次のとおりです。
var path = //Some system path
conn = new SQLiteConnection(path);
foreach(var category in Categories)
{
var details = (from x in this.conn.Table<category>() select x)
//Do stuff with data
}
上記は、「カテゴリは変数ですが、タイプのように使用されています」というエラーを出します。次のように、カテゴリをジェネリック型に変換しようとしました。
var path = //Some system path
conn = new SQLiteConnection(path);
foreach(var category in Categories)
{
string name = category.ToString();
Type targetType = Type.GetType(name);
//DatabaseContainer is the type all the categories inherit from
Type genericType = typeof(DatabaseContainer).MakeGenericType(targetType);
object instance = Activator.CreateInstance(genericType);
var details = (from x in this.conn.Table<instance>() select x)
}
targetType、genericType、および instance はすべて、「カテゴリは変数ですが、型のように使用されます」という同じエラーを返します。データベースの構造を変更することはできません。これが可能かどうか、または各テーブルに同じコードを記述する必要があるかどうかはわかりません。