Ungültige Umwandlung von 'System.String' in 'System.TimeSpan'

8

Ich habe derzeit eine generische Methode, die einen Wert aus der Datenbank basierend auf einem Schlüssel liest und einen bestimmten Typ dieses Wertes zurückgibt.

%Vor%

Aber wenn ich versuche, einen TimeSpan-Typ zurückzugeben, erhalte ich die folgende Ausnahme. Invalid cast from 'System.String' to 'System.TimeSpan'.

Nach etwas Googeln habe ich festgestellt, dass die gängigste Lösung die Methoden TimeSpan.Parse oder TimeSpan.TryParse sind.

Ich habe auch TimeSpan Struktur gefunden.

public struct TimeSpan : IComparable, IComparable, IEquatable, IFormattable

Meine Frage ist warum, warum TimeSpan das nicht kann. Liegt es daran, dass es nicht die Schnittstelle IConvertible hat? Irgendwelche Gedanken dazu würden sehr geschätzt.

    
Jethro 12.08.2011, 10:53
quelle

3 Antworten

22

Ich glaube nicht, dass Convert.ChangeType das ist, was Sie wirklich wollen. Probieren Sie TypeConverter.ConvertFrom :

aus %Vor%     
Anton Gogolev 12.08.2011, 10:56
quelle
1

Es gibt keine implizite Konvertierung zwischen String und TimeSpan , Sie müssen explizit konvertieren mit Parse oder TryParse

    
Dean Chalk 12.08.2011 10:56
quelle
1

Es ist keine explizite Umwandlung zwischen string und TimeSpan definiert, da die meisten Zeichenfolgen nicht TimeSpan s sind.

Wenn das Framework einen solchen Cast definiert, würden Sie auch erwarten, dass diese auf DateTime und allen anderen Werttypen existieren?

    
Oded 12.08.2011 10:55
quelle

Tags und Links