基本オブジェクト(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);
はマークオフ
public RTDSensor(RTUDevice rtu) : base(rtu.Id)
{
}
かである私のOOPの設計方法のようにRTDSensorにコンストラクタでベースオブジェクトを渡す方が良いでしょう。
ORMが関わっていますか(存在するようです)? Findメソッドは何をしますか?スローされた例外は何ですか? p.ReturnIdがRTDSensorであると確信していますか? – Mac