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
30 Klasse, 30x der gleiche Code - wie löst man so etwas am besten?
thesysde
myCSharp.de - Member



Dabei seit:
Beiträge: 7
Herkunft: Deutschland

Themenstarter:

30 Klasse, 30x der gleiche Code - wie löst man so etwas am besten?

beantworten | zitieren | melden

Hallo!
Ich hoffe, dass ich das Problem vernünftig beschreiben kann.

Es gibt N Formulare.
Jedes Formular soll einen gemeinsamen Code benutzen, der sich ändern kann.
Wenn ich also den Code in jedes Formular schreibe, muss ich N Formulare ändern.
Das ist bei einer großen Anzahl an Formularen eine irre Arbeit.
Bei C++ würde ich so etwas durch einen include lösen.
Das gibt es bei C# aber nicht.

Es geht um mehrere Handler.
Einer davon ist der ON_PAINT Handler.
Dort werden Sachen gemacht, die zu 70% identisch sind, aber 30% sind unterschiedlich.
Ich könnte eine Klasse OP_Handler machen und die dann immer so aufrufen:

public void ON_PAINT(PaintEventArgs e)
{
   opHandler.meineFunktion(e);
}
Den OP_Handler vorher mit new OP_Handler(this) ...
Nur würde er dann nur die Standard Funktionen kennen, nicht meine, da jeder Form ja anders heißt.

Nun ist das Problem, dass im OP Handler e.garphics..etc nutzbar sind, aber solche Sachen wie
Zugriff auf eine eigene Funktion in der jeweiligen Form geht nicht.

Wie löst man solche Probleme am elegantesten?

Ich hoffe, ich habe mich richtig ausgedrückt, so dass man das Problem versteht.

Olaf
private Nachricht | Beiträge des Benutzers
Lars Schmitt
myCSharp.de - Experte

Avatar #avatar-2240.jpg


Dabei seit:
Beiträge: 2335
Herkunft: Witten

beantworten | zitieren | melden

Hallo thesysde,

wie wäre es denn, mit einer von Dir erstellten abstract Class von der du ableitest.

in dieser Klasse, hättest Du dann deine globalen Funktionen und Properties und wenn du die funktion virtual machst kannst Du diese, wenn Du es benötigst sogar überschreiben.

Viele Grüße
Lars
private Nachricht | Beiträge des Benutzers
thesysde
myCSharp.de - Member



Dabei seit:
Beiträge: 7
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Hallo!

Ja, zu dem Ergebnis bin ich dann auch gekommen.
Das wird dann so aussehen:

Layout <- CommonG <- GtypeX <- startclass1
Layout <- CommonG <- GtypeY <- startclass2
Layout <- CommonE <- EtypeX <- startclass3
etc


Ich muss es tatsächlich in ein N-Schichten Modell aufteilen.
Aber damit wird es dann gehen.

Da trauere ich dem include und den virtuellen Klassen hinterher.
Ich frage mich, was gegen diese beiden Sachen sprach, als die C# designed haben.

Olaf
private Nachricht | Beiträge des Benutzers
Cat
myCSharp.de - Member

Avatar #avatar-3070.jpg


Dabei seit:
Beiträge: 790

beantworten | zitieren | melden

Auch in C++ ist es ein schlechtes Design, dies mittels 'include' (oder sogar Makros) zu lösen!
Abstrakte Klassen und/oder Interfaces sind hier der richtige Weg (d.h. das Strategy-Pattern).
private Nachricht | Beiträge des Benutzers