我写了一个看起来像这样的方法:
public TimeSlotList processTimeSlots (DateTime startDT, DateTime endDT, string bookingType, IList<Booking> normalBookings, GCalBookings GCalBookings, List<DateTime> otherApiBookings) {
{
..... common process code ......
while (utcTimeSlotStart < endDT)
{
if (bookingType == "x")
{
//process normal bookings using IList<Booking> normalBookings
}
else if (bookingType == "y") {
//process google call bookings using GCalBookings GCalBookings
}
else if (bookingType == "z" {
//process other apibookings using List<DateTime> otherApiBookings
}
}
}
所以我从 3 个不同的地方调用它,每次传递一个不同的预订类型,每个案例传递我有兴趣处理的预订,以及 2 个不用于此预订类型的空对象。
我无法将所有预订都纳入相同的数据类型,这会使这更容易,并且每种预订类型都需要以不同的方式处理,所以我不确定如何改进这一点。