我創建了一個叫做AlarmFactory因爲這樣的工廠類...你如何使一個可以返回派生類型的工廠?
1 class AlarmFactory
2 {
3 public static Alarm GetAlarm(AlarmTypes alarmType) //factory ensures that correct alarm is returned and right func pointer for trigger creator.
4 {
5 switch (alarmType)
6 {
7 case AlarmTypes.Heartbeat:
8 HeartbeatAlarm alarm = HeartbeatAlarm.GetAlarm();
9 alarm.CreateTriggerFunction = QuartzAlarmScheduler.CreateMinutelyTrigger;
10 return alarm;
11
12 break;
13 default:
14
15 break;
16 }
17 }
18 }
心跳警報是從報警的。我得到一個編譯錯誤「不能隱式轉換類型...存在顯式轉換(你是否缺少一個轉換?)」。我如何設置它以返回派生類型?
編輯
謝謝大家對你的答案。我在十分鐘內解決了編譯錯誤,這就是爲什麼我沒有發佈整個錯誤。但我讚賞所提到的不同方法。
對於記錄它是「不能隱式轉換類型'goAlarmsCS.HeartbeatAlarm'到'goAlarmsCS.Alarm'顯式轉換存在(您是否缺少演員?)」。 (我認爲)錯誤發生在上線8
賽斯
請發佈整個編譯器錯誤+告訴我們你得到它的哪一行。 – 2010-06-02 19:27:04
如果HeartbeatAlarm確實是從警報派生的,那麼您應該能夠毫無錯誤地返回它。我們可能需要查看更多的代碼和有關編譯器錯誤的更多詳細信息,包括行,才能提供幫助。 – GBegen 2010-06-02 19:28:05
HeartbeatAlarm.GetAlarm()返回什麼:報警類型還是HeartbeatAlarm類型?我猜這是其中越來越觸發編譯時錯誤(從報警向下轉換 - > HeartbeatAlarm,當然) – code4life 2010-06-02 19:31:12