【发布时间】:2011-08-24 23:18:27
【问题描述】:
这里的总 OO 菜鸟问题。我在一个类中有这两种方法
private void StoreSessionSpecific(LateSession dbSession, SessionViewModel session)
{
session.LateSessionViewModel.Guidelines = dbSession.Guidelines.ToList();
}
private void StoreSessionSpecific(Session dbSession, SessionViewModel session )
{
// nothing to do yet...
}
当我调用 StoreSessionSpecific 时,dbSession 的类型为 LateSession(LateSession 继承 Session)
var dbSession = new LateSession();
StoreSessionSpecific(dbSession, session);
我预计排名靠前的会被调用。由于 dbSession 是 LateSession 类型。
@Paolo Tedesco 这就是类的定义方式。
public class Session
{
public int ID { get; set; }
public int SessionTypeId { get; set; }
public virtual SessionType SessionType { get; set; }
[Required]
public DateTime StartTime { get; set; }
[Required]
public DateTime EndTime { get; set; }
// Session duration in minutes
// public int SessionDuration { get; set; }
public virtual ICollection<Attendee> Attendees { get; set; }
}
public class LateSession : Session
{
public int MaxCriticalIncidentsPerUser { get; set; }
public int MaxResultCriticalIncidents { get; set; }
public virtual ICollection<Guideline> Guidelines { get; set; }
}
【问题讨论】:
-
您输入“var”而不是“LateSession”是否有特定原因?
-
@acron,不输入
var的原因是什么? -
var!=dynamic如果这是您反对使用它的原因。这是程序员的捷径。编译器仍然强制执行强类型,如果它不能确定实际类型会报错。 -
@acron,这里使用 var 完全等同于使用全类型名,只是语法糖...
-
@Michail,该语言确实不使用它首先找到的与参数匹配的方法。
标签: c# oop polymorphism overloading