Ich habe eine Liste von Basisobjekten (RTUDevice) und möchte durchlaufen und konvertieren jedes zu einem abgeleiteten Objekt (tatsächlich eine abgeleitete von einem abgeleiteten RTDSensor), jedoch die Downcasting ist ein Fehler werfen.
public RTUDevice(int id)
{
_id = id;
}
public class RTDDevice : RTUDevice
{
public RTDDevice(int id)
: base(id)
{
}
}
public class RTDSensor : RTDDevice
{
public RTDSensor(int id)
: base(id)
{
}
}
RTDSensor return = (RTDSensor)_devices.Find(d => d.Id == p.ReturnId);
Wäre es besser, das Basisobjekt in einem Konstruktor an RTDSensor zu übergeben wie
public RTDSensor(RTUDevice rtu) : base(rtu.Id)
{
}
oder ist mein OOP-Entwurf völlig daneben.