Announcement

Collapse
No announcement yet.

Methode automatisch für eigenen Rückgabetypen aufrufen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Methode automatisch für eigenen Rückgabetypen aufrufen

    Ich habe mir einen eigenen Rückgabetypen mithilfe einer Struktur definiert, der es mir auch ermöglicht, mehr als nur einen einfachen Wert zurückzugeben.
    Ich prüfe dann immer das Ergebnis des Aufrufs der Methode aber gibt es eine Möglichkeit, ein Event zu erstellen das bei einem Fehlertyp(enum) eine Methode automatisch aufgerufen wird, um bspw. eine Fehlermeldung auszugeben?
    Ich prüfe ja den Rückgabetyp(enum) ab und dann soll für einen Fehlertypen automatisch, also ohne explizite Angabe eine Methode aufgerufen werden aber im Einzelfall würde ich dann gerne auch eine eigene Implementierung benutzen, wie kann ich das realisieren? In der Form sieht das dann ungefähr so aus:

    Code:
    Result Report = Database.changeData(); // nur als Beispiel
    
    switch (Report.RetResult)
    {
        // Diesen Block will ich nicht immer mit angeben aber ich will den Standardaufruf auch sozusagen unterdrücken können und dafür etwas eigenes machen können.
        case RetTypes.Exception:
        {
    
        }
    }
    Ja, da bei dem switch ist das natürlich nicht nur eine Ergebnisabfrage aber wie kann ich es realsieren, das dieser Block für den case RetTypes.Exception nicht immer explizit mit angegeben werden muss, also das dafür beispielsweise eine Standardmethode für jede Form aufgerufen wird?
    Zuletzt editiert von Threin; 25.01.2015, 00:24.

  • #2
    Exceptions durch Rückgabetypen zu ersetzen klingt, sorry, nach Geisterfahrt. Es waren ziemlich mühselige Jahre bis man den Weg zu Exceptions gefunden hat und du machst dich einfach in die Gegenrichtung auf den Weg.
    Warum?

    Comment


    • #3
      Würde das so verstehen:

      Er will ja nicht die Exceptions ersetzen, sondern wenn die Methode beendet wird, die die Klasse Result Report gefüllt hat (u.a. mit Exceptions), soll automatisch eine Methode zur Auswertung der Klasse (hier der Exceptions) aufgerufen werden.

      Warum steht die Auswertung nicht in der Klasse Result? Ggf. mithilfe einer abstr. Klasse?

      Dann
      Result. macheWas();
      Result. checkFehler();
      Christian

      Comment


      • #4
        Originally posted by Ralf Jansen View Post
        Exceptions durch Rückgabetypen zu ersetzen klingt, sorry, nach Geisterfahrt. Es waren ziemlich mühselige Jahre bis man den Weg zu Exceptions gefunden hat und du machst dich einfach in die Gegenrichtung auf den Weg.
        Warum?
        Das habe ich ja gar nicht vor. Christian Marquadt hat es richtig erfasst.
        Ich wusste nicht genau, wie ich das gut beschreiben sollte von daher kann es sein, das es ein wenig missverständlich war.

        Ich habe es jetzt auch so gemacht, das ich die Auswertung im Fehlerfall in der Result Klasse gemacht habe.
        Allerdings habe ich noch das Problem, das wenn es sich um einen speziellen Fehler handelt, das dann eine Methode in der Form aufgerufen werden soll und das dann auch für jeden Aufruf. Einfach so die Methode der Form aufrufen wäre ja ziemlich unsauber oder? Wie kann ich das am besten machen? (Die Methode ist auch sowieso private)
        Zuletzt editiert von Threin; 26.01.2015, 03:17.

        Comment


        • #5
          Mit einer abstrakten Klasse, die die 0815 Methode enthält und im Spezialfall überschrieben wird
          Christian

          Comment


          • #6
            Sehe gerade AOP (Aspekt orientierte Programmierung) gibt es auch für C#
            https://msdn.microsoft.com/en-us/lib...=vs.71%29.aspx
            Christian

            Comment


            • #7
              Falls du das richtig aus Threins Anforderung rausgelesen hast, ich kanns nicht, dann ist das leider ein alter Hut der nie richtig gestartet ist. Was aktuelles aus der AOP Ecke in .Net wäre PostSharp.

              Comment


              • #8
                Dann hat er ja alle Möglichkeiten......
                Christian

                Comment

                Working...
                X