Кто-нибудь, пожалуйста, предложите, как сделать приведенный ниже сценарий.Как отличить базовый класс по типу
У меня есть имя случая класса BaseData и производный класс с именем DerivedData
Type classtype=Assembly.GetAssembly(typeof(BaseData)).GetType("DerivedData");
BaseData baseobject= Activator.CreateInstance(classtype) as BaseData;
Теперь я хочу, чтобы отливать BaseData к DerivedData, что-то, как показано ниже.
Примечание: (baseobject.getType()) является недопустимым синтаксисом.
DerivedData objderived= (baseobject.getType())baseobject;
Отредактировано: Я пытаюсь удалить условие if, потому что BaseData получил несколько DerivedData.
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);
}
Является 'типа DerivedData' статически доступен в коде, который нуждается в этом актерском? – Dennis
@Dennis Вы имеете в виду экземпляр DerivedData? .DerivedData унаследован от BaseData. – user3796642
Нет, я имею в виду статическую ссылку на сборку, где объявляется 'DerivedData'. С технической точки зрения, простое выполнение: 'var objDerived = (DerivedData) baseobject'. Но это разрешено только в том случае, если «DerivedData» известен статически. На самом деле это похоже на XY-проблему. – Dennis