2 Stimmen

Basisobjekt im Konstruktor als Alternative zum Downcast

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X