考虑以下情况。我有一个基类
Measurement
和几个派生类(例如AdditionalMeasurement
和SpecialMeasurement
),它们是从Measurement
继承的。class Measurement {
public DateTime TimeStamp { get; set; }
}
class AdditionalMeasurement : Measurement {
public DateTime PurchaseDate { get; set; }
}
class SpecialMeasurement: Measurement {
public DateTime PrescriptionDate { get; set; }
}
如何按默认方式(对于所有其他派生类)将 List<Measurement>
按 Measurement.TimeStamp
降序排序,但如果列表中的项是 AdditionalMeasurement
类型,则按 PurchaseDate
排序,如果项是 SpecialMeasurement
类型,则按 PrescriptionDate
排序?
显然,我下面的尝试行不通,但希望能表达出思想。
List<Measurement> measurements = new List<Measurement>() { ... };
measurements.OrderByDescending(m =>
{
if (m is AdditionalMeasurement additionalMeasurement)
{
return additionalMeasurement.PurchaseDate;
}
else if (m is SpecialMeasurement specialMeasurement)
{
return specialMeasurement.PrescriptionDate;
}
else
{
return m.TimeStamp;
}
});
getOrderDateTime
函数,这就是面向对象编程的用途... - TuroMeasurement
中创建一个虚方法,可以在派生类中重写,并返回所需的属性。