} // StartYearVisit
// ----------------------------------------------------------------------
protected Month StartMonthVisit(Month month, TContext context = null, SeekDirection?visitDirection = null)
{
if (month == null)
{
throw new ArgumentNullException("month");
}
if (visitDirection == null)
{
visitDirection = SeekDirection;
}
OnVisitStart();
// iteration limits
Month lastVisited = null;
DateTime minStart = DateTime.MinValue;
DateTime maxEnd = DateTime.MaxValue.AddMonths(-1);
while (month.Start > minStart && month.End < maxEnd)
{
if (OnVisitMonth(month, context) == false)
{
lastVisited = month;
break;
}
switch (visitDirection)
{
case SeekDirection.Forward:
month = month.GetNextMonth();
break;
case SeekDirection.Backward:
month = month.GetPreviousMonth();
break;
}
}
OnVisitEnd();
return(lastVisited);
} // StartMonthVisit