プロが教える店舗&オフィスのセキュリティ対策術

次のようにするとデータベースのテーブルをリストに格納できるようにしております。

List<mstSyain> mstSyainList = SQLiteDataAccess.db.Table<mstSyain>().ToList();

mstSyainはクラス名(テーブル名と同じ)となっておりますが、これを次のようにできないかと思っております。

List<テーブル名の格納された変数> mstSyainList = SQLiteDataAccess.db.Table<テーブル名の格納された変数>().ToList();

探してみましたが情報が見つかりませんでした。
そもそもこのようなやり方は無理なのでしょうか?

A 回答 (3件)

ANo.1です。



がちゃがちゃすればできます。
当然、その文字列からクラスを特定できることが条件になるので、完全修飾名である必要があったりするでしょうが。

しかし、求めているのは恐らく、質問にあるような動作をできることではなく、その後の処理で、該当クラスのプロパティ(列名)やメソッドを利用したいということですよね。
それはいくらなんでも出来ません。
インターフェースやリフレクションを利用しようとムリです。

dynamicキーワードを使えば可能になりますが、面倒さを回避するために利用するなら間違ってるし、インテリセンスやコンパイラの恩恵を得られなくなります。

まずは、質問の方法ができるかどうかではなく、何をどうしたいのか、をもう一度考え直してはいかがでしょうか。
欲しいクラスを動的に決定したいというのは、どういうシチュエーションなんですか。
    • good
    • 0
この回答へのお礼

naktakさんありがとうございます。
実はデータベースのテーブル名を取得してテーブル名と同名のリストに入れることができたらテーブルの数だけ
リストに入れるという記述をしなくて済むかな?と考えたのですが、よくよく考えてみるとリストの宣言と同時
にリストへの代入を行えばよいので意味がなかったかもしれません。
お付き合い下さいましてありがとうございました。

お礼日時:2019/07/04 17:37

死ぬほど無理矢理だけどリフレクションを使えばなんとかなる... か?

    • good
    • 0
この回答へのお礼

Tacosanさん回答ありがとうございます。
リフレクションという方法ならば可能性はあるということで。
調べてみます。

お礼日時:2019/07/04 09:04

ムリです。


「テーブル名の格納された変数」ってただの文字列ですよね?
ジェネリック型とはそもそも型を特定することの用途であるため、型解決できなければなりません。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。

やはり無理なのですね。
それがわかっただけでも助かりました。

お礼日時:2019/07/03 17:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!