Sagen wir, wir haben diese Checkboxen:
Und diese Methoden:
Ich möchte jede Methode nur aufrufen, wenn das entsprechende Kontrollkästchen aktiviert ist. Der Code könnte so aussehen:
%Vor%Betrachten Sie nun, dass Sie statt 3 Checkboxen und 3 Methoden viel mehr haben. Wie würden Sie den obigen Code umschreiben, um ihn DRY zu machen?
Ich würde sagen, für den Fall, den Sie vorgestellt haben, lassen Sie es so wie es ist; Sie möchten nicht übermäßig abstrahieren, ohne einen guten Grund zu haben, da es eine Code-Basis weniger wartbar machen kann. Natürlich spielt der Kontext eine Rolle und es ist letztlich ein Urteilsspruch.
Das heißt, hier ist, wie ich das angehen würde. Erstellen Sie eine Auflistung, in der jedes Element sowohl das Steuerelement als auch den Aktionsdelegaten enthält. Führen Sie dann eine Schleife durch und führen Sie die Logik für jedes Element aus.
%Vor%Oder (möglicherweise?) besser mit Linq:
%Vor%der Einfachheit halber würde ich mit
gehen %Vor%Aber Sie könnten etwas mit dem Nachrichtenteil machen, wenn es so einfach ist, und ich könnte je nach lokalem Kontext eine Fehlerüberprüfung einwerfen.
Ich würde ein Dictionary
mit <CheckBox, Func>
erstellen und jeden Wert durchlaufen: