steinadler Geschrieben 10. November 2011 Geschrieben 10. November 2011 Hallo ihr Lieben, wie bekomme, oder bekomme ich überhaupt, einen formatstring (also "Standard Numeric Format Strings") in ein Objekt gewandelt, welches IFormatProvider imlementiert? Danke Zitieren
Klotzkopp Geschrieben 10. November 2011 Geschrieben 10. November 2011 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. Zitieren
steinadler Geschrieben 10. November 2011 Autor Geschrieben 10. November 2011 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. Zitieren
a3quit4s Geschrieben 10. November 2011 Geschrieben 10. November 2011 Warum castest du das object (mit objects zu arbeiten ist boese!) nicht in den Typen und rufst dessen .ToString Methode auf? Zitieren
steinadler Geschrieben 10. November 2011 Autor Geschrieben 10. November 2011 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. Zitieren
a3quit4s Geschrieben 10. November 2011 Geschrieben 10. November 2011 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. Zitieren
lilith2k3 Geschrieben 10. November 2011 Geschrieben 10. November 2011 Reflektion Aber vielleicht erklärst Du einmal genauer, was Du vorhast ... Zitieren
a3quit4s Geschrieben 10. November 2011 Geschrieben 10. November 2011 Soweit ich das beurteilen kann, hat das alles mit http://www.fachinformatiker.de/net/149928-c-zeiger-array-parameter-uebergeben.html zu tun. Zitieren
steinadler Geschrieben 10. November 2011 Autor Geschrieben 10. November 2011 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. Zitieren
HJST1979 Geschrieben 10. November 2011 Geschrieben 10. November 2011 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 Zitieren
steinadler Geschrieben 10. November 2011 Autor Geschrieben 10. November 2011 (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 10. November 2011 von steinadler Zitieren
steinadler Geschrieben 11. November 2011 Autor Geschrieben 11. November 2011 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. Zitieren
Sacaldur Geschrieben 11. November 2011 Geschrieben 11. November 2011 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 Zitieren
steinadler Geschrieben 11. November 2011 Autor Geschrieben 11. November 2011 ...in dem Fall wäre das nicht Object sondern ValueType Woher weiß man das denn??? Gibts da irgendwo eine Klassenhierarchie???? Zitieren
Sacaldur Geschrieben 11. November 2011 Geschrieben 11. November 2011 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 Zitieren
steinadler Geschrieben 11. November 2011 Autor Geschrieben 11. November 2011 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? Zitieren
lilith2k3 Geschrieben 12. November 2011 Geschrieben 12. November 2011 Types Aber selbst auf die Basisklasse ValueType muss man erstmal kommen. int und Konsorten sind ja structs, oder? Nein. Zitieren
steinadler Geschrieben 12. November 2011 Autor Geschrieben 12. November 2011 Types Nein. Nicht? Int32 Structure Aber trotzdem interessant dein Link. Zitieren
realgun Geschrieben 12. November 2011 Geschrieben 12. November 2011 Es ist aber nicht jeder ValueType automatisch ein "Struct", in .NET gibt es da noch "Enum" Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.