Ich stoße auf ein Problem mit den Klassen DecimalConverter
und Int32Converter
, die scheinbar inkonsistente Ergebnisse liefern, wie das folgende einfache Konsolenprogramm zeigt:
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?
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.
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.
Tags und Links .net c# typeconverter