C # 4: Dynamisch und nullbar <>

So habe ich einen Code, der dieses anonyme Objekt zwischen Methoden umgeht:

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))
};

Methoden, die diesen anonymen Objekttyp empfangen, deklarieren seinen Typ alsdynamic:

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

Zur Laufzeit jedoch, wennStartDate oderEndDate sind auf @ gesetnew Nullable<DateTime>(DateTime.Parse(...)), eine Methode, die dieses @ empfändynamic Objekt (mit dem Namenpromo) führt dies aus:

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

It löst eine Ausnahme aus:

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

Was ist denn hier los? Was verstehe ich nicht überNullable types und dasdynamic Stichwort

Dieser Code hat einwandfrei funktioniert, bevor ich ihn geändert habe. Ich habe das @ entfernstruct das zuvor gespeicherteText, StartDate, undEndDate und ersetzte es durch einen anonymen Typ und gab es als @ weitdynamic.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage