C # 4: динамический и обнуляемый <>

Итак, у меня есть код, который передает этот анонимный объект между методами:

var promo = new
{
    Text = promo.Value,
    StartDate = (startDate == null) ?
        new Nullable<DateTime>() : 
        new Nullable<DateTime>(DateTime.Parse(startDate.Value)),
    EndDate = (endDate == null) ?
        new Nullable<DateTime>() : 
        new Nullable<DateTime>(DateTime.Parse(endDate.Value))
};

Методы, которые получают этот анонимный тип объекта, объявляют его тип какdynamic:

private static bool IsPromoActive(dynamic promo)
{
    return /* check StartDate, EndDate */
}

Однако во время выполнения, еслиStartDate или жеEndDate установлены вnew Nullable<DateTime>(DateTime.Parse(...)), метод, который получает этоdynamic объект (названныйpromo) выполняет это:

if (promo.StartDate.HasValue && promo.StartDate > DateTime.Today ||
    promo.EndDate.HasValue && promo.EndDate < DateTime.Today)
{
    return;
}

Выдает исключение:

Server Error in '/' Application.
'System.DateTime' does not contain a definition for 'HasValue' 

Что тут происходит? Что я не понимаю оNullable типы иdynamic ключевое слово?

Этот код работал нормально, прежде чем я изменил, я удалилstruct ранее сохраненныеText, StartDate, а такжеEndDate и заменил его анонимным типом и передал его какdynamic.

Ответы на вопрос(1)

Ваш ответ на вопрос