Wie man den Wert eines Nullable-Typ per reflection
Mit der spiegelung, die ich brauche um den Wert von einem Anwesen eines Nullable Type of DateTime
Wie kann ich dies tun?
Wenn ich versuche propertyInfo.GetValue(object, null)
es funktioniert nicht.
thx
Mein code:
var propertyInfos = myClass.GetType().GetProperties();
foreach (PropertyInfo propertyInfo in propertyInfos)
{
object propertyValue= propertyInfo.GetValue(myClass, null);
}
propertyValue Ergebnis immer null für nullable-Typ
- Funktioniert nicht in welcher Weise? Zu sagen "es funktioniert nicht" ist viel weniger hilfreich als eine Beschreibung wie es nicht funktioniert.
- Wie über die Veröffentlichung einer Beispiel-code, was nicht funktioniert? Und zu beschreiben, was das problem ist? "Funktioniert nicht" ist nicht gerade die präziseste Beschreibung.
- Eine kurze, aber vollständige Programm wirklich helfen würde...
- Du bist immer noch fehlen wesentliche code. Wie deine Klasse aussieht und wo der Wert wird initialisiert, etwas Verschieden von null. Ein Programm, das kompilieren und das problem aufweisen, wäre schön.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Reflexion und
Nullable<T>
sind ein bisschen wie ein Schmerz; Reflexion verwendetobject
, undNullable<T>
hat spezielle boxing/unboxing Regeln fürobject
. So durch die Zeit, die Sie haben eineobject
es ist nicht mehr eineNullable<T>
- es ist entwedernull
oder der Wert selbst.d.h.
Dies macht es ein bisschen verwirrend manchmal, und beachten Sie, dass Sie nicht bekommen kann die original
T
aus einem leerenNullable<T>
wurde geboxt, als alles, was Sie haben, ist einnull
.Nullable.GetUnderlyingType(type)
Gegeben einfach Klasse:
Und den code:
Wert hat entweder null (wenn .Bar ist null) oder DateTime-Wert. Welcher Teil dies nicht für Sie arbeiten?
Habe ich versucht, dieses Recht jetzt, und es funktionierte Prima:
Nullable<T>
, nicht die Erlangung der Wert der Eigenschaft aufNullable<T>
.