2009-07-23 8 views
3

Ich habe den folgenden Code, um eine Zeichenfolge in den Typ T zu konvertieren. Es funktioniert gut für alle anderen Typen, gibt aber einen Fehler, wenn T vom Typ DateTime ist.DateTime TypeConverter

TypeConverter c = TypeDescriptor.GetConverter(typeof (T)); 
return (T) c.ConvertTo(obj, typeof (T)) 

ich in einem String übergeben wie

obj = "09/09/2009" 

einen Fehler wirft { " 'Datetimeconverter' ist nicht in der Lage 'System.String' auf 'System.DateTime' zu konvertieren."}

Antwort

7

Wenn Sie wissen, dass Sie eine Zeichenfolge erhalten, können Sie stattdessen TypeConverter.ConvertFromString verwenden. Das funktioniert mit DateTimeConverter, obwohl ich nicht weiß, warum ConvertTo nicht funktioniert.

So funktioniert das:

TypeConverter c = TypeDescriptor.GetConverter(typeof (DateTime)); 
Console.WriteLine((DateTime) c.ConvertFromString("09/09/2009")); 

Alternativ nur ConvertFrom funktioniert auch:

TypeConverter c = TypeDescriptor.GetConverter(typeof (DateTime)); 
Console.WriteLine((DateTime) c.ConvertFrom("09/09/2009")); 

Es wird - eine DateTime zu konvertieren, weil das die Art von Wandler ist es ist.

Sie sollten jedoch auf kulturelle Probleme achten.

Verwandte Themen