Erkennen der Art von Anwendung (Console oder Forms)
-
Hallo,
ich habe eine Datenbankklasse geschrieben, die über Methoden die Fehler auswirft.
Zu Testzwecken habe ich das Ganze als Consolen-Anwendung geschrieben, die entgültige Verwendung findet allerdings in einer Windows::Forms Umgebung statt.
Natürlich könnte ich dann den Exception-Auswurf einfach umschreiben auf eine Forms-Ausgabe. Eleganter wäre natürlich zu überprüfen, in welcher Umgebung die Klasse verwendet wird und dann entsprechend die Ausgabe anzupassen. Hat da jemand Erfahrung mit, ob das möglich ist?
Ach ja, die Klasse ist mit einigen anderen in einer DLL zusammengefasst und in das Hauptprogramm eingebunden...
LG Solick
-
Ich denke das ist der falsche Ansatz. Warum wirfst du keine Exceptions bzw benutzt Events?
Es sollte deiner Datenbankklasse vollkommen egal sein in welcher Umgebung sie verwendet wird, ansonsten würde ich das als Fehler im Design bezeichnen.
-
Sorry, da hab ich mich falsch ausgedrückt. Die Exception wird natürlich ausgeworden, ich will sie nur auf den Bildschirm bringen und zwar in bestimmt formatierter Weise. Ich kann auch ne extra Exception Klasse schreiben aber mein Problem beibt, dass ich ja wissen muss, ob ich eine Console oder eine Windows Forms Anwendung habe um sie richtig auf den Bildschirm zu bringen...
-
Konsole:
try { DBClass.DoMagicThings(); } catch(DBException ex) { Console.WritleLine(ex); }
WinForms:
try { DBClass.DoMagicThings(); } catch(DBException ex) { MessageBox.Show(ex); }
Ich verstehe nicht wo jetzt genau dein Problem liegt. Entweder steh ich auf dem Schlauch oder du.
-
Ok für jeden Fall mit try...catch arbeiten geht natürich auch. Ich dachte es gibt vielleicht eine Methode, die Art der Anwendung zu erfragen, zb.
ret = getAnwendungsArt(); if(ret == anw::win32) ... if(ret == anw::Forms) ...
Aber mit try...catch gehts natürlich auch.
Danke & Grüße aus dem sonnigen Berlin
Solick
-
hmm also irgendwie hab ich da doch einen Denkfehler.
In einer DLL kann man keine Windows::Forms Elemente nutzen oder?
Dann müsste ich in meiner Forms-Anwendung eine Exception-Klasse implementieren, der ich dann die Events der dbKlasse übergebe oder?
Grüße Solick
-
Wie so sollte man System::Windows::Forms in einer DLL nicht benutzen können?
Standardmäßig fehlt in einem DLL-Projekt einfach der Verweis auf die richtige Assembly, diesen musst du von Hand hinzufügen.Projekteigenschaften -> Allgemeine Eigenschaften -> Framework und Verweise -> Neuen Verweis hinzufügen...
-
Ups, ich dachte die wären in der Klassenbibliothek schon automatisch eingebunden oder es sei ebend nicht möglich.
Danke nochmal!
Beste Grüße
Solick