我有一个基础对象列表 (RTUDevice) 并希望遍历并将每个对象转换为派生对象(实际上是派生 RTDSensor 的派生对象),但是向下转换会引发错误。
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);
将构造函数中的基础对象传递给 RTDSensor 会更好吗
public RTDSensor(RTUDevice rtu) : base(rtu.Id)
{
}
或者是我的 OOP 设计偏离了标准。