Gewusst wie: Konvertieren einer Zeichenfolge in einen Nullable-Typ, Die erst zur Laufzeit Bestimmt wird?
Ich habe den code unten und ich brauche, um zu konvertieren eine Zeichenfolge in einer Art, die ist auch angegeben String:
Type t = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
object d = Convert.ChangeType("2012-02-23 10:00:00", t);
Ich bekomme die folgende Fehlermeldung:
Invalid cast from 'System.String' to 'System.Nullable`1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
Wie wäre das schön möglich?
Ich weiß, eine hässliche Möglichkeit wäre zu prüfen, ob der Typ nullable verwenden, wenn:
Type possiblyNullableType = Type.GetType("System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]");
var underlyingType = Nullable.GetUnderlyingType(possiblyNullableType);
Object result;
//if it's null, it means it wasn't nullable
if (underlyingType != null)
{
result = Convert.ChangeType("2012-02-23 10:00:00", underlyingType);
}
Wäre es eine bessere Möglichkeit?
Dank,
InformationsquelleAutor der Frage The Light | 2012-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zwei Probleme.
Erstens
Convert.ChangeType
einfach nicht unterstützt nullable-Typen.Zweitens, selbst wenn es das täte, durch Boxen, das Ergebnis (die Zuordnung zu einer
object
), Sie wäre ja schon ein Umwandlung in einDateTime
.Könnte man spezielle Fall von auf null festlegbaren Typen:
InformationsquelleAutor der Antwort
Schrieb ich die unten generische helper-Methode, die funktioniert in den meisten Szenarien (nicht getestet mit generischen Typen):
InformationsquelleAutor der Antwort The Light
InformationsquelleAutor der Antwort Hossein Shahabi
So etwas? Es sei denn, Sie wirklich brauchen, um es dynamisch.
Könnten Sie überprüfen, um zu sehen, ob dein Typ ist einer der "nullable" - Typen und dann könnte man vielleicht etwas finden, nützlich, hier:
Konvertieren string nullable-Datentyp (int, double, etc...)
InformationsquelleAutor der Antwort Paddy