Wie strukturiere ich am besten meine Klassen/Projektmappe

  • C#
  • .NET (FX) 3.0–3.5

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Fortender.

    und das geht?
    ich hätte gedacht, StatusCode sei etwas, was du durchs Deserialisieren erst erhälst.

    Und dann sind viele Error-Klassen inkorrekt, denn bei Errors gibts nur eine Art Json-String - der ist für alle Errors derselbe - enthält allenfalls unterschiedliche Nummern.

    Also für verschiedene Successe gibts auch verschieden strukturierte Json-Responses, aber bei Fehler gibts nur eine Json-Response, nämlich die Error-Response.
    Und so sollten dann auch die Klassen aussehen, findich.
    Und ich täte halt keinen Super-Typen mir ausdenken, sondern wenn ein Error kommt, auch eine Exception schmeissen - dazu sind sie da.
    Und für die SinusBot-Api-Errors wäre halt eine geeignete Exception-Klasse von Exception abzuleiten, und die dann zu schmeissen, und später auch mal zu fangen, wenns soweit ist.
    Stimmt. Wenn ein Error geschmissen wird von der API, dann nur success = false im Json-Format.
    Was würdest du dann sagen? DeserializeObject<Success> versuchen und mit TryCatch abfangen.. Dann weiß ich ja wenn ich die JsonObjectClasses sauber gecoded
    habe, dass dann nur ein Error seitens der API rauskommen kann.

    Der StatusCode ist der aus der HttpWebResponse. (=200 -> Success; =4xx -> Error)

    Das meinte ich.

    MfG Tim
    Frag einfach den WebClient ab welcher HTTP-Status Code zurück kommt und selektiere endsprechend die Instanz des Serialisiers.

    LG, J.Herbrich
    @J.Herbrich
    Hast du eigentlich irgendeinen Beitrag aus dem Thread hier mal durchgelesen?
    1. Wir reden hier von HttpWebRequest/Responses (was in dem Fall egal ist, da ich ja von einem StatusCode rede)
    2. JsonConvert.DeserializeObject<T>() bzw. JsonConvert.DeserializeObject() ist eine statische Methode. Ich frage mich was du mit "Instanz des Serialisiers" meinst :P
    3. Ich finde es ja schön, dass du fleißig kommentieren möchtest. Allerdings kommt es mir so vor als wolltest du kommentieren um die Anzahl deiner Beiträge zu pushen. Verstehe mich nicht falsch, aber das was du meistens antwortest wurde entweder Seiten/Beiträge vorher längst abgehandelt, passt nicht zum Thema oder ist völlig falsch.
    4. Es würde wirklich helfen, wenn du dir die Threads in denen du Beiträge verfasst, auch vorher mal durchliest.
    ​Ich habe eine Methode die Request und Response abhandelt​ und einen JsonString zurückgibt. Der StatusCode oder die WebException gibt an welchen Typ ich an den Deserializer mitgeben muss. Da es aber zig Funktionen gibt die per Requests abgehandelt werden und deshalb auch für jede Funktion ein extra "Json-Objekt-Schema" erstellt wird (in Form von Klassen/Typen), muss ich meine besagte Methode so umbauen, dass ich
    Success-Typ ODER Error-Typ ausgeben kann. Und weil ich hier an gutem Programmierstil interessiert bin, möchte ich das am stilistisch-bestmöglichsten machen. Vielleicht verstehst du auch jetzt, warum dein Beitrag für die Tonne war. Dennoch danke für die krasse Bemühung.

    MfG Tim
    Ich Arbeite immer mit den DataCotract Serializer, und der wird mit einen Typen Instanziert (GetType(JsonStrukturKlasseVonWasAuchImmmer).

    Anonsten (wen es geht) einfach Normal Deserialisieren in einen TryCatch Block, auftretende Exception bei einen Fehler abfangen, den JSON-Text dieses mal mit der Fehler Klasse Deserialisieren und dann die Klasse als Excpetion werfen. (Die Klasse muss von Exception abgeleitet sein).

    LG, J.Herbrich
    Json.Net von Newtonsoft ist schneller. Hab ich ja auch schon in irgendeinem Beitrag geschrieben, dass ich die lib von Newtonsoft verwende.
    Danke, dass du EDR nochmal zusammengefasst hast. :P

    Ich werd nochmal alles strukturieren und überlegen, wie ich am besten vorgehe