さて、Productという抽象クラスがあります。Productを実装するItems、Kits、Packagesという3つのテーブルがあります。製品には、オブジェクトの主キーを公開するパブリックプロパティがあります。
そうは言っても、私は製品を渡すフォームを持っています。適切なテーブルを取得するために、そのタイプを反映する大きなスイッチを作成することなく、その製品を新しいデータコンテキストから引き出したいと思います。
私はこのようなことをしたかったのですが、キャストビットはfooを受け入れません。
public BuilderInclusionsForm(Product p) : this()
{
Type foo = p.GetType();
product = db2.GetTable(p.GetType()).Cast<foo>().SingleOrDefault(a =>
a.ProductID == p.ProductID);
またはこれ:
public BuilderInclusionsForm(Product p) : this()
{
Type foo = p.GetType();
product = db2.GetTable(p.GetType()).OfType<foo>().SingleOrDefault(a =>
a.ProductID == p.ProductID);