我正试图根据FactoryBuilder在代码中返回的对象来更新数据库中的不同表。我想使用InstrumentFactory,它在运行时为我提供对象/仪器,然后我用(更新信息(进行一些操作
var tmpInstrument = InstrumentFactory.MakeInstrument(nameOfTable);
//old code was..... var tmpInstrument = new SuperTable();
然而,当我稍后想要更新我的DB时,我不知道如何将其编码为InstrumentFactory在运行时根据"nameOfTable"设置的对象。我想根据tmpInstruction可能是什么对象来更新不同的表。
if (tmpInstrument is SuperTable)
{
_context.SupterTable.Add((ObjectCast)tmpInstrument);
_context.SaveChanges();
}
有什么好的方法可以根据tmpSplitInfo是哪个对象来更新_context.ThisParticularTable或_context.AnotherObjectTable吗同时删除if语句和强制转换
感谢
看起来您正在尝试确定tmpSplitInfo
是否属于SuperTable
类型,所以我建议您查看is
关键字:
if(tmpSplitinfo is SuperTable)
{
_context.SuperTable.Add(tmpInstrument);
_context.SaveChanges();
}
这就是我想要的(谢谢Elias(。
_context.Set(tmpInstrument.GetType()).Add(tmpInstrument);