Laden...

Unterkomponenten

Erstellt von Andreas@Tricept vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.358 Views
A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 16 Jahren
Unterkomponenten

Hallo,
ich habe eine generelle Frage, und zwar implementiere ich derzeit eine größere Komponente, welche auch viele kleine UnterKomponten enthält.
Mir geht es hier um die Kommunikation zwischen diesen.

Beispielsweise sollen einige Unterkomponenten bestimmte Methoden der Hauptkomponente ausführen können, können die derzeit nur wenn diese Methode aber auch public ist und daher kann es dann auch von außen aufgerufen werden.

Gibt es da irgendwelche Möglichkeiten oder habe ich generell ein Designfehler gemacht?

Beispiel:
Hauptkomponente ist Formular.
Unterkomponenten sind Felder.
Wenn eine eigenschaft von dem Feld geändert wird, soll auch die Eigenschaft des Formulars auf geändert wechseln und das entsprechende Event dazu soll gestartet werden. Würde alles gehen wenn alles Public ist, ich bzw. für die Property einen Set Teil implementiere, was jedoch nicht von außen erlaubt sein soll.

A
764 Beiträge seit 2007
vor 16 Jahren

Du kannst dich in der Hauptkomponente an Events, der Unterkomponenten anmelden.

Statt public kannst du auch internal verwenden, dann ist die Entsprechende Funktion nur im gesamten Projekt verfügbar, nicht ausserhalb

O
778 Beiträge seit 2007
vor 16 Jahren

Im Zusammenhang mit Komponenten würd ich dir aber dringend von der Verwendung von Internal abraten, denn damit machst du dir alle Vorteile, die du mit (hoffentlich über Schnittstellen definierten) Komponenten erschlagen hast: Austauschbarkeit geht dann nur, wenn die neue Komponente auch im selben Projekt ist und das ist nicht Sinn und Zweck der Sache.

Nimm Events

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Andreas@Tricept,

es kommt darauf an, ob die Unterkomponenten fest und untrennbar mit der Hauptkomponente verbunden sind und es auch keinen Sinn macht, die außerhalb zu verwenden. Dann könntest du die Komponenten als innere Klasse (nested classes) definieren oder internal verwenden.

Meistens ist es aber so, dass die einzelnen Komponenten eben nicht so fest verbunden sind und dann sollten die Unterkomponenten keinesfalls auf die Hauptkomponente zugreifen. Sie sollten die Hauptkomponente nicht mal kennen. Die Kommunikation zwischen Unterkomponente und Hauptkomponente sollte dann durch die schon genannten Events entkoppelt werden.

herbivore

A
Andreas@Tricept Themenstarter:in
289 Beiträge seit 2006
vor 16 Jahren

Original von herbivore
es kommt darauf an, ob die Unterkomponenten fest und untrennbar mit der Hauptkomponente verbunden sind und es auch keinen Sinn macht, die außerhalb zu verwenden. Dann könntest du die Komponenten als innere Klasse (nested classes) definieren oder internal verwenden.

Das trifft bei mir zu, die unterkomponenten können alleine nicht existieren und ich habe die auch in die selbe klasse als nested Class reingepackt, aber ich habe noch keine Unterschiede erkannt wenn ich diese getrennt implementiert hätte.

Internal trifft ja nicht nur auf eine Klasse und die geschachtelten Klassen zu, sondern ja für das ganze Projekt.

Aber gut dann werde ich den Weg mit den Events gehen, danke für die Hilfe!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Andreas@Tricept ,

aber ich habe noch keine Unterschiede erkannt wenn ich diese getrennt implementiert hätte.

innere Klassen können auch auf die privaten Member der umgebenden Klasse zugreifen.

herbivore