Ich arbeite an einer switch-Anweisung mit Typprüfung. Der folgende Code funktioniert für alle Typen einwandfrei, die Herausforderung besteht jedoch bei Nullable-Typen.Warum der GetType von DateTime kein konstanter Wert ist
switch (Type.GetTypeCode(propertyInfos.PropertyType))
{
// Type code doesn't have reference with int, long, etc.,
case TypeCode.DateTime:
// Do the work for DateTime
break;
case TypeCode.Int32 :
// Do the work for Int32
break;
case TypeCode.Int64:
// Do the work for long
break;
case TypeCode.DateTime? :
break;
default:
break;
}
Ich habe das versucht, so GetType
zu ändern und DateTime.Today.GetType().ToString()
würde uns System.DateTime als String zurück. Aber wenn der Compiler verwendet wird, löst er einen Fehler aus, da dies kein gültiger Constant string
ist. Zu jedem gegebenen Zeitpunkt, DateTime.Today.GetType()
würde uns immer System.DateTime
geben, warum dies vom Compiler nicht akzeptiert wird?
Sie haben DateTime zweimal. Der erste Fall und der letzte Nicht-Standardfall sind beide DateTime. Die Nachricht lautet "Die switch-Anweisung enthält mehrere Fälle mit dem Label-Wert '16'". Abstimmung zum Schließen. – john