2 oder mehr voneinander abhängige Klassen ohne 'friend'
-
Hallo,
wie löst ihr sowas einigermassen elegant:Die statischen Klassen A und B haben die zwei Methoden 'Change' die irgendwas ändern.
Ein Auruf von A.Change muss stets auch B ändern und umgekehrt.
In C++ würde ich dann A.Change private machen und B als friend und A.Change in B.Change aufrufen.
Nur wie macht man sowas in z.B. C# am besten, wo es kein friend gibt?Gruß,
Jockelx
-
z.b. mit events
a.change schickt ein changed event an b und umgekehrt
musst nur aufpassen dass der changed event nich wieder an die quelle zurückgeschickt wird
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C# und .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Jockelx schrieb:
Hallo,
wie löst ihr sowas einigermassen elegant:Die statischen Klassen A und B haben die zwei Methoden 'Change' die irgendwas ändern.
Ein Auruf von A.Change muss stets auch B ändern und umgekehrt.
In C++ würde ich dann A.Change private machen und B als friend und A.Change in B.Change aufrufen.
Nur wie macht man sowas in z.B. C# am besten, wo es kein friend gibt?Gruß,
Jockelxfriend als Lösung zum beschriebenen Problem finde ich nicht angebracht.
Simon
-
Und warum nicht?
Damit erreiche ich zumindest genau das, was ich will.
-
wahrscheinlich weil freind auch zugriff auf alle anderen privaten elemente
bietet und so die komplette kapselung aushebelt
-
In C# gibts "internal" statt friend. Ist halt viel viel "gröber" als friend. Dafür einfacher für Leute zu handhaben die nicht bis 3 zählen können, was vermutlich der Grund ist warum es in C# "internal" anstelle von friend gibt.
-
Sovok schrieb:
wahrscheinlich weil freind auch zugriff auf alle anderen privaten elemente
bietet und so die komplette kapselung aushebeltDas ist IMO das dümmste Argument gegen friend überhaupt. Ich persönlich mache lieber meine Klasse gegenüber EINER anderen Klasse 100% auf, als auch nur eine einzige private Funktion meiner Klasse gegenüber Gott und der Welt aufzumachen. Erst recht wenn die eine Klasse im selben Projekt lebt und auch von mir programmiert wird.
-
hustbaer schrieb:
Sovok schrieb:
wahrscheinlich weil freind auch zugriff auf alle anderen privaten elemente
bietet und so die komplette kapselung aushebeltDas ist IMO das dümmste Argument gegen friend überhaupt. Ich persönlich mache lieber meine Klasse gegenüber EINER anderen Klasse 100% auf, als auch nur eine einzige private Funktion meiner Klasse gegenüber Gott und der Welt aufzumachen. Erst recht wenn die eine Klasse im selben Projekt lebt und auch von mir programmiert wird.
so ist es auch nicht gemeint sondern im kontext friend gegen event
wobei ein eventsystem die kapselung nicht beeinflusst und die registrierung
für ein event auf bestimmte partnerklassen beschränkt werden kann