0

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 はすべて、「カテゴリは変数ですが、型のように使用されます」という同じエラーを返します。データベースの構造を変更することはできません。これが可能かどうか、または各テーブルに同じコードを記述する必要があるかどうかはわかりません。

4

0 に答える 0