Unterstützung von ToString (Zeichenfolgenformat) mit benutzerdefiniertem Nummerntyp

8

Nachdem ich einen eigenen Zahlentyp erstellt habe (eigentlich DoubleDouble ), möchte ich die IFormattable Schnittstelle implementieren. Also muss ich irgendwie die Formatzeichenfolge parsen.

%Vor%

Der Benutzer der Klasse sollte es als Ersatz für double (oder jedes andere Zahlenformat) verwenden können.

%Vor%

Meine Frage ist, kennt jemand ein gutes Tutorial darüber oder kann mir ein paar Tipps geben? Wie unterstützt man die Lokalisierung in diesem Prozess?

Wie man die Formatzeichenfolge analysiert? Gibt es einige Methoden, um diese Aufgabe zu unterstützen, oder muss ich alles mit "Hand" mit regexp und so tun?

Ich habe wirklich nach Hilfe gesucht, konnte aber keine finden, wenn Sie etwas in einer anderen Sprache (C, C ++) finden, die helfen könnte, bitte erzählen Sie mir davon.

    
John Deo 28.08.2012, 15:47
quelle

4 Antworten

1

MSDN verfügt über ein schönes Beispiel einer Temperature -Klasse, die% implementiert. co_de% interface mit einem eigenen benutzerdefinierten Format.

Ich denke, du weißt das schon; Wie auch immer, heute habe ich gelernt, dass, wenn Ihre IFormattable -Klasse die DoubleDouble -Schnittstelle implementiert, dann:

%Vor%

... würde die IFormattable -Implementierung der DoubleDouble -Klasse mit dem spezifischen Format ToString(...) als ersten Parameter aufrufen, von dem ich vermute, dass er nahe an dem ist, was Sie wollen. Sie müssen diesen Teil des Formats trotzdem analysieren.

Ich würde vermuten, dass ein Großteil des Formatparsings tief in die hochoptimierten .Net-Bibliotheksbinärdateien eingebettet ist, so dass Sie keine benutzerdefinierten virtuellen Parsingmethoden erhalten, die Ihnen helfen könnten.

    
wardies 12.01.2013 21:51
quelle
0

Vielleicht kann Ihnen das helfen:

%Vor%     
saeed mirzaie saran 10.11.2012 06:06
quelle
0
  

Wie kann die Lokalisierung in diesem Prozess unterstützt werden?

Etwas wie das Folgende:

%Vor%
  

Wie wird die Formatzeichenfolge analysiert? Gibt es einige Methoden, um dabei zu helfen?   Aufgabe oder muss ich alles mit "Hand" mit regexp und so tun?

Es gibt keine öffentliche API im .NET-Framework, um dies für Sie zu tun. Wenn Sie sich die Quelle für die Implementierung der .NET primitiven numerischen Typen von IFormattable ansehen, rufen alle schließlich externe Methoden auf , also liefern sie keine Einsicht. Sie müssen wahrscheinlich etwas wie RegEx verwenden, um die Formatzeichenfolge zu analysieren. Dann können Sie durch die größte Potenz von 10 dividieren, um herauszufinden, was die erste Ziffer der Ausgabe sein soll, subtrahieren Sie diese Zahl und wiederholen Sie für die kleinere Potenz von 10 , bis Sie alle Ziffern erzeugt haben.

    
luksan 29.08.2012 04:34
quelle
0

Ich hatte vor ein paar Jahren eine JavaScript-Nummer-Formatierungsfunktion geschrieben, die die .NET-Art der Syntaxanalyse von Format-Strings imitiert. Es kann eine Hilfe für Sie sein, eine C # -Version davon zu schreiben. Zumindest kann es Ihnen einen Ausgangspunkt geben.

Ссылка

Scrollen Sie ganz nach unten bis zur Funktion $ .formatNumber.

Hinweis: Diese Funktion wird nicht mehr für die Verwendung der Bibliothek Globalize verwendet, die Ihnen auch Einblick in das Parsing geben kann Formatzeichenfolgen.

    
Tony 30.10.2013 17:39
quelle

Tags und Links