作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 C#.net 中开发,我相信我需要使用泛型来解决我遇到的问题,但我不知道从哪里开始。
以下是我需要执行的步骤:
不同的约会需要从数据库中提取(填充)不同的信息。例如,一个约会可能只需要用户的名字/姓氏,而另一个可能需要名字/姓氏/出生日期。
我想让子类先执行,再调用父类方法。问题是 myAppointment 在通过 Switch 语句后仍然被视为 Appointment 对象而不是 DoctorAppointment/OtherAppointment。在声明 myAppointment 的地方我实际上不知道它将是什么类型的对象
这是我目前拥有的代码:
tblAppointment getAppointment = (from getApp in dc.tblAppointments
where getApp.appID == Id
select getApp).SingleOrDefault();
// Needs to be set the something. I really want this be to set to a generic type as I don’t really know what type it will be until it has been through the switch statement
Appointment myAppointment = null;
switch (getAppointment.tblAppointment.appTypeID)
{
case 2:
{
// Changes myAppointment from Appointment to DoctorsAppointment
myAppointment = new DoctorsAppointment();
}
break;
case 1:
{
myAppointment = new OtherAppointment();
}
break;
default:
break;
}
// I want this to set myAppointment to DoctorsAppointment.Populate(getAppointment)
return myAppointment.Populate(getAppointment);
约会是父类。DoctorsAppointment/OtherAppointment 是子类。
子类中的 Populate 需要参数,而父类不需要。我目前收到的错误是:
No overload for method 'Populate' takes '1' arguments
希望我已经解释清楚了。
谢谢,
克莱尔
最佳答案
一种解决方案是,在父类 Appointment 中,创建这样的方法:
public virtual void Populate( getAppointment)
{
// does nothing
}
然后在子类中:
public override void Populate( getAppointment)
{
// do what you need
}
关于c# - 合并泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1232360/
我是一名优秀的程序员,十分优秀!