Вот для чего нужны дженерики. Вместо того, чтобы иметь список поездок разных типов в каждом дочернем классе, у вас есть один список с типом generi c в вашем базовом классе:
class Base_TripLog<TripType> where TripType: Base_Trip {
public List<TripType> trips = ...
public Base_TripLog(string log_filename) {
// load stuff into trips
}
}
Теперь вы можете просто унаследовать этот класс используя правильный аргумент generi c:
class Derived_TripLog : Base_TripLog<Derived_Trip>
{
public string company_name;
public Derived_TripLog(string company_name, string filename) : base(filename)
{
this.company_name = company_name;
if (trips.Count > 0) {
// do stuff
}
}
Таким образом, вам не нужно повторно объявлять свойство для каждого класса, а просто иметь одно определение для всех типов, производных от Base_Trip
.