Я знаю, что это глупый вопрос, потому что ответ, скорее всего, «о, конечно!» один.
Вот что у меня есть:
public interface IEvent {
int Id
string Title
}
public class MeetingEvent : IEvent {
int Id
string Title
//Meeting Properties
string Room;
User Organizer;
}
public class BirthdayEvent : IEvent {
int Id
string Title
//Bday Properties
int Candles;
bool Surprise;
}
Я работаю над настраиваемым механизмом связывания моделей в ASP.NET MVC, поскольку моя основная форма редактирования наследуется от IEvent, а я выполняю RenderPartial для добавления других специфических для типа полей
Когда я добираюсь до подшивки модели, я вижу все ключи / значения для типа, что хорошо. Теперь я хочу сделать это:
IEvent _event;
switch (eventType) { // EventType is an enum
case EventType.Birthday:
_event = new BirthdayEvent();
_event.Candles= GetValue<int>(bindingContext, "Candles");
_event.Surprise= GetValue<bool>(bindingContext, "Surprise");
break;
case EventType.Meeting:
_event = new MeetingEvent();
// Meeting-specific fields are set here...
break;
default:
throw new InvalidOperationException("Invalid Event Type");
}
По сути, мне нужна переменная IEvent, и я хочу создать определенный тип события, который реализует IEvent и установить поля, специфичные для типа. Visual Studio говорит мне, что она не может получить доступ к полям BirthdayEvent.
Хотя, я понимаю это, я не могу понять, что мне нужно делать. Таким образом, этот вопрос:).
Заранее спасибо!