Zum Inhalt springen

[c#] formatstring in NumberFormatInfo umwandeln


Empfohlene Beiträge

Geschrieben

Hallo ihr Lieben,

wie bekomme, oder bekomme ich überhaupt, einen formatstring (also "Standard Numeric Format Strings") in ein Objekt gewandelt, welches IFormatProvider imlementiert?

Danke

Geschrieben
Die Frage ergibt für mich keinen Sinn.

Geh mal einen Schritt zurück, und beschreib bitte das Problem, nicht was du für die Lösung hältst.

wie üblich ;-)

Also folgendermaßen:

Ich habe ein Objekt vom Typ object. Das hat dann nach der Zuweisung irgendeinen Typ bool oder int oder so. Jetzt möchte ich gern mit Objekt.ToString(string _format) versuchen, das typisierte Objekt in die gewünschte Zeichenfolge umzuwandeln. Nur hat object keine ToString(string _format)-Methode.

Geschrieben
Warum castest du das object (mit objects zu arbeiten ist boese!) nicht in den Typen und rufst dessen .ToString Methode auf?

Weil ich das zu dem Zeitpunkt noch nicht weiß. Das geht höchstens, wenn ich mittels switch den Typ prüfe.

Das ganze arbeitet auf einer Zwischenschicht... Es gibt eine Liste mit Objekten und ich weiß aber nicht, was von extern für neue Objekte

eingespeißt wurden. Mit GetString(string _format) wollte ich dann gern das erwählte Objekt in einen String umwandeln.

Geschrieben

Da du

[...]das typisierte Objekt[...]
geschrieben hattest, war ich davon ausgegangen dass du die Typen kennst.

Wenn dem nicht so ist: Typ ermitteln und auf den richten Typ casten.

Geschrieben

Hm... na was soll ich genauer beschreiben.

Es gibt eine Liste vom Datentyp object, der verschiedene Daten hinzugefügt werden.

Es geht dort nur um Datentypen wie byte, int, double, float, bool.

Da ich aber zur Entwurfszeit noch nicht weiß, welchen Typ die Objekte (werden per Datei eingelesen) haben, hab ich mich für eine Liste vom Typ object entschieden.

Nun möchte ich von der Oberfläche her gern einen bestimmten Wert aus der Liste als Zeichenfolge ausgegeben haben. z.B. über eine Methode namens GetString(). Das geht auch soweit, nur möchte ich gern noch einen Format-String übergeben.

Geschrieben

Hallo

nur mal als Idee, warum nimmst du eine Liste vom Typ Object ? Du könntest doch auch einfach eine Liste vom Typ String machen, dann geht auch die Format funktion.

Gruß Hans-Jörg

Geschrieben (bearbeitet)
Hallo

nur mal als Idee, warum nimmst du eine Liste vom Typ Object ? Du könntest doch auch einfach eine Liste vom Typ String machen, dann geht auch die Format funktion.

Gruß Hans-Jörg

... dann kann ich aber das Format zur Laufzeit nicht mehr bestimmen.

Bearbeitet von steinadler
Geschrieben

Hab jetzt die Lösung gefunden (was eine Nacht Schlaf so bringen kann). Ist eigentlich ganz simpel: Die Objekte, die per formatstring formatiert werden können, implementieren die Schnittstelle IFormattable.

In meiner Methode prüfe ich einfach, ob das Objekt diese Schnittstelle implementiert. Somit spare ich mir ein switch-case für alle Datentypen.

Danke an alle.

Geschrieben
Es geht dort nur um Datentypen wie byte, int, double, float, bool.

also solltest du eine Klasse als gemeinsamen Datentyp verwenden, der in der Klassenhirarchie so tief wie möglich angeordnet ist (wenn Object an oberster Stelle steht und davon abgeleitete Klassen darunter)

in dem Fall wäre das nicht Object sondern ValueType

sollten alle übergebenen Elemente auch das Interface implementiert haben, kannst du auch das Interface als Typ für die Liste verwenden

Geschrieben

eine Klassenhirarchie gibt es, allerdings weiß ich nicht, ob es irgendwo eine gute Übersicht gibt

du solltest allerdings wissen, wie im .NET Frame die Wertetypen und Referenztypen gehandhabt werden

Geschrieben
eine Klassenhirarchie gibt es, allerdings weiß ich nicht, ob es irgendwo eine gute Übersicht gibt

du solltest allerdings wissen, wie im .NET Frame die Wertetypen und Referenztypen gehandhabt werden

Der Unterschied ist mir schon klar. Basistyp object nützt mir nicht sehr viel, da die Objekte auch Strings enthalten können sollen. Also muss ich doch auf Basistyp object zurückgreifen.

Aber selbst auf die Basisklasse ValueType muss man erstmal kommen. int und Konsorten sind ja structs, oder?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...