我知道这是一个愚蠢的问题,因为答案可能是“哦,当然是对的!”一。在接口的实现中修改特定于类型的属性
以下是我有:
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字段。
虽然,我明白这一点,我似乎无法弄清楚我需要做什么。因此,这个问题:)。
在此先感谢!
变种!真棒,Keltex,谢谢:) – Dan 2010-02-22 15:25:36