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
.