Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
API zu einer Klasse, Grundschwatzfrage
panicJonny
myCSharp.de - Member



Dabei seit:
Beiträge: 69

Themenstarter:

API zu einer Klasse, Grundschwatzfrage

beantworten | zitieren | melden

Hallo zusammen,

ich habe mir eine Klasse gebaut, mit der ich strings in so ziemlich jeden Datentyp umwandeln kann, den ich möchte.
So weit so gut.

Die Hauptmethode wird so aufgerufen. StringConverter.ConvertTo<T>(string).

Jetzt ist mir beim Benutzen aufgefallen, dass der Aufruf relativ schwer zu lesen ist. Gerade weil ich den halt oft hintereinander benutze. Also in mehreren Zeilen, wenn ich mal wieder einen String zerlege und die Bestandteile in die entsprechenen Properties packe.

Da hab ich mir gedacht, ich mache für häufige Datentype spezielle Methoden.

Zum Beispiel StringConverter.ToInt(string).

Wäre das eigentlich zu viel des Guten und fallen euch andere Lösungen ein?

Viele Grüße.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von panicJonny am .
private Nachricht | Beiträge des Benutzers
dannoe
myCSharp.de - Member



Dabei seit:
Beiträge: 189

beantworten | zitieren | melden

Kannst du die BCL Methoden (z. B. Int32.TryParse Method (System) | Microsoft Docs) nicht dafür verwenden?
private Nachricht | Beiträge des Benutzers
panicJonny
myCSharp.de - Member



Dabei seit:
Beiträge: 69

Themenstarter:

beantworten | zitieren | melden

Klar kann ich die verwenden und mache ich auch im Hintergrund. Meine Klasse macht das ganze ein wenig praktischer, da ich ein einheitliches Interface habe.

Was ich nicht geschrieben habe ist, dass man den Typen auch als Parameter übergeben kann und nicht unbedingt als generic type parameter angeben muss.

Es gibt also auch eine StringConverter.ConvertTo(type,string). Das ist auch der ursprüngliche Grund für die Klasse, da ich damit über Reflection Datenklassen aus Dateien heraus befüllen kann. Vornehmlich gehts dabei um Grenzwerte die in Konfigdateien stehen.

Da ich dann die Klasse nun mal schon hatte, habe ich sie ein wenig erweitert und nutze sie nun als allgemeine Konverterklasse.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von panicJonny am .
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1918
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Eigentlich kannst du auch auf die Convert Klasse aufbauen.
Diese bietet dir übrigens genau solche Methoden.
Dort werden bei falschen Formaten aber auch Exceptions geworfen.
Ansonsten kannst du, wie von dannoe empfohlen, auch gegen die Methpden der jeweiligen DAtentypen arbeiten.
I.d.R. haben diese eine Parse/TryParse Methode.
Dabei kannst du in TryParse an dem Rückgabewert erkennen ob die Konvertierung funktioniert hat.

Im Endeffekt erfindest du hier das Rad neu, was aber unnötig ist.

Nachtrag:
Deine Antwort kam leider vor meiner.
Also ist deine StringConvert Klasse nur ein Wrapper um die bestehenden Klassen und Methoden.
Ist zwar ganz nett, aber kann u.U. auch Fehler verschleiern.
Wenn deine Konvertierung scheitert, was bekommst du dann für einen Wert oder wirfst du auch nur eine Exception?
Dann hätte deine Klasse keinen direkten Mehrwert als die Convert Klasse.

T-Virus
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
panicJonny
myCSharp.de - Member



Dabei seit:
Beiträge: 69

Themenstarter:

beantworten | zitieren | melden

Mein Klasse kann schon ein wenig mehr.

Sie kann auch Enums(Flags), Point(f), Size(f) und so weiter konvertieren. Den Vorteil habe ich oben schon beschrieben, dass ich mit Reflection den Zieldatentyp "auslesen" kann und dann entsprechend Konvertieren.

Grüße,
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2361

beantworten | zitieren | melden

Am Ende, wenn es nur für dich bestimmt ist, musst du entscheiden was sinnvoll ist und was nicht.

Von der Beschreibung her, baust du ziemlich viel bereits vorhandene Funktionalität des Frameworks einfach nach. Ob das so gut ist, wage ich zu bezweifeln.

Aber ohne genaue Kenntnis, warum du genau den Weg gehst kann man dir auch schwer Empfehlungen geben.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 639

beantworten | zitieren | melden

Hallo panicJonny
Zitat von panicJonny
Da hab ich mir gedacht, ich mache für häufige Datentype spezielle Methoden.

Zum Beispiel StringConverter.ToInt(string).

Wäre das eigentlich zu viel des Guten und fallen euch andere Lösungen ein?

Das kannst du schon so machen. Das ist für die BasisTypen ja eine nette Verbesserung der Lesbarkeit.

Du könntest das auch noch als Extension-Method anbieten:


var result = "123".ToInt();

Gruß
Alf
private Nachricht | Beiträge des Benutzers