J'ai une liste d'objets de base (RTUDevice) et je veux parcourir et convertir chacun en un objet dérivé (en fait un dérivé d'un RTDSensor dérivé), mais la descente est une erreur .Objet de base dans le constructeur comme alternative au downcast
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);
Serait-il préférable de passer l'objet de base dans un constructeur à RTDSensor comme
public RTDSensor(RTUDevice rtu) : base(rtu.Id)
{
}
ou est ma conception OOP fourvoyés.
Y a-t-il un ORM impliqué (semble-t-il)? Que fait la méthode Find? Quelle est l'exception lancée? Etes-vous sûr que votre p.ReturnId est un RTDSensor? – Mac