如何基于类型强制转换基类
本文关键字:转换 基类 何基于 类型 | 更新日期: 2023-09-27 18:35:24
有人请建议如何做下面的场景。
我有一个案例类名 BaseData 和名为 DerivedData 的派生类
Type classtype=Assembly.GetAssembly(typeof(BaseData)).GetType("DerivedData");
BaseData baseobject= Activator.CreateInstance(classtype) as BaseData;
现在我想将 BaseData 转换为派生数据,如下所示。
注意:(baseobject.getType()) 是无效的语法。
DerivedData objderived= (baseobject.getType())baseobject;
已编辑:我正在尝试删除if条件,因为BaseData获得了多个派生数据。
if (baseobject is DerivedData1)
{
db.Set<DerivedData1>().Add((DerivedData1)data);
}
else if (data is DerivedData2)
{
db.Set<DerivedData2>().Add((DerivedData2)data);
}
else if (data is DerivedData3)
{
db.Set<DerivedData3>().Add((DerivedData3)data);
}
根据您的编辑,并假设:
-
db
是DbContext
; -
BaseData
层次结构仅存在于代码级别(因此,从BaseData
派生的类型不在 EF 模型点的 TPH、TPT 或 TPCT 层次结构中);
只需使用非通用 API:
var baseobject = // create BaseData descendant somehow;
db.Set(baseobject.GetType()).Add(baseobject);
如果你可以通过直接引用它来到达BaseData
,你也可以到达DrivedData
吗?
Type classtype = Assembly.GetAssembly(typeof(DerivedData)).GetType("DerivedData");
DerivedData dreivedobject = Activator.CreateInstance(classtype) as DerivedData;