Я создал класс фабрики под названием 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 }
сигнал сердцебиения, производный от сигнала тревоги. Я получаю ошибку компиляции "не может неявно преобразовать тип ... Явное преобразование существует (вы пропускаете приведение?)". Как настроить это для возврата производного типа?
EDIT
СПАСИБО всем за ответы. Я исправил ошибку компиляции в течение десяти минут, поэтому я не опубликовал всю ошибку. Но я оценил различные подходы, которые были упомянуты.
Для записи это было «Невозможно неявно преобразовать тип« goAlarmsCS.HeartbeatAlarm »в« goAlarmsCS.Alarm »Явное преобразование существует (вам не хватает роли?)». (Я думаю.) Ошибка происходила по линии 8.
Сет
Пожалуйста, разместите всю ошибку компилятора + сообщите нам, на какой строке вы ее получите. –
Если HeartbeatAlarm действительно получен из Alarm, вы сможете вернуть его без ошибок. Возможно, нам понадобится больше узнать о вашем коде и более подробной информации об ошибке компилятора, включая строку, чтобы помочь. – GBegen
Что возвращает HeartbeatAlarm.GetAlarm(): тип сигнала тревоги или тип HeartbeatAlarm? Я предполагаю, что это то, где возникает ошибка времени компиляции (подавление от Alarm -> HeartbeatAlarm, конечно) – code4life