好的,所以我有一个名为 Product 的抽象类。我有 3 个表,分别称为 Items、Kits 和 Packages,它们实现了 Product。Product 具有公开对象主键的公共属性。
那就是说我有一个传递产品的表格。我想将该产品从一个新的数据上下文中拉出来,而不必编写一个反映它的类型的大开关来获得它的正确表。
我想做这样的事情,但演员表不接受 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);