TypeConverter gebrochen für primitive Typen?

8

Ich stoße auf ein Problem mit den Klassen DecimalConverter und Int32Converter , die scheinbar inkonsistente Ergebnisse liefern, wie das folgende einfache Konsolenprogramm zeigt:

%Vor%

Die Ausgabe von diesem ist wie folgt:

%Vor%

Wenn ich TypeConverter nicht richtig verstehe, sollte folgendes gelten:

%Vor%

sollte das gleiche Ergebnis wie

ergeben %Vor%

Zumindest im Fall von System.Int32 und System.Decimal nicht.

Meine Frage ist folgende: Weiß jemand, ob dies beabsichtigt ist? Oder sind die TypeConverter für native Typen in C # eigentlich defekt?

    
rossipedia 07.05.2012, 22:49
quelle

2 Antworten

2

Laut der MSDN-Dokumentation für Int32Converter ...

  

Dieser Konverter kann nur ein vorzeichenbehaftetes 32-Bit-Ganzzahlobjekt in und konvertieren   aus einer Zeichenfolge.

Ich stimme @svick in den Kommentaren zu, obwohl ich nicht verstehe, warum Sie eine JSON-Zeichenkette durch Int32 zu einer Dezimalstelle an erster Stelle deserialisieren müssen.

    
Chris Hannon 07.05.2012, 23:10
quelle
1

Sie sollten in solchen Fällen nicht mit Typkonvertern umgehen müssen. Wenn Sie Ihre Modellklasse deserialisieren möchten, tun Sie etwas wie:

%Vor%

Und es werden alle Conversions für Sie erledigt.

Wenn Sie die Konvertierung tatsächlich manuell durchführen müssen, verwenden Sie Convert.ToDecimal(integer) (oder Convert.ChangeType(integer, typeof(decimal)) ) und es wird korrekt funktionieren.

    
svick 08.05.2012 00:35
quelle

Tags und Links