Zitat: |
Unter den Modifizierer public verstehe ich, dass die Klasse auch außerhalb des Assemblies instanziiert werden kann und unter internal vertehe ich, dass auf die Klasse nur innerhalb des Assemblies zugegriffen werden kann. |
Das ist korrekt.
Zitat: |
Wenn ich das Projekt kompliere, befinden sich doch alle Klassen und Stukturen in einem Assembly? Wo ist hier mein Denkfehler? |
Der Denkfehler ist, so meine Vermutung, dass es hier nicht um die Assembly geht, an der Du gerade arbeitest, sondern *andere* Assemblies, die deine Assembly nutzen wollen.
Das
public sagt aus, dass *andere* Assembly die Person-Klasse nutzen und den Konstruktor aufrufen können, das
internal verbietet das. Innerhalb deiner Assembly ist das egal, da kann man beides gleichermaßen nutzen.
Angenommen, deine Assembly liefert ein paar Tools für einen anderen Entwickler.
In dem Fall hast Du natürlich Klassen, Methoden, etc., die andere Entwickler nutzen wollen und das muss alles
public sein.
Allerdings hast Du auch Dinge, die nur für dich und deine Implementierung wichtig sind, die anderen Entwickler dürfen sie nicht nutzen, um nichts kaputt machen zu können. Das sollte in der Regel
internal sein.
Oder Du bist eine Firma, die Produkte verkauft und dafür Maschinen braucht.
Der Kunde ist nicht Teil der Firma, darf aber die Produkte kaufen und verwenden =>
public
Die Maschinen dürfen aber nur von Mitarbeitern der Firma verwendet werden =>
internal
Wenn es aber keine anderen Assemblies gibt, die dein Projekt nutzen sollen, dann ist das für dich ziemlich irrelevant.
Du kannst also getrost alles
public oder
internal machen, das ist dann eine Frage des Stils - solange die Regel, über die Du hier gestolpert bist, erfüllt wird.
Ich persönlich bevorzuge
internal.