Wie schränke ich den Zugriff auf verschachtelte Klassenmitglieder auf einschließende Klassen ein?
Kann angegeben werden, dass auf Mitglieder einer verschachtelten Klasse von der einschließenden Klasse zugegriffen werden kann, nicht jedoch von anderen Klassen?
Hier ist eine Illustration des Problems (mein eigentlicher Code ist natürlich etwas komplexer ...):
public class Journal
{
public class JournalEntry
{
public JournalEntry(object value)
{
this.Timestamp = DateTime.Now;
this.Value = value;
}
public DateTime Timestamp { get; private set; }
public object Value { get; private set; }
}
// ...
}
Ich möchte verhindern, dass Client-Code Instanzen von erstelltJournalEntry
, aberJournal
muss in der Lage sein, sie zu erstellen. Wenn ich den Konstruktor öffentlich mache, kann jeder Instanzen erstellen ... aber wenn ich ihn privat mache,Journal
wird nicht in der Lage sein!
Notiere dass derJournalEntry
Klasse muss öffentlich sein, da ich vorhandene Einträge für Client-Code verfügbar machen möchte.
Jeder Vorschlag wäre dankbar!
UPDATE: Danke an alle für ihren Beitrag, ich bin irgendwann für die Öffentlichkeit gegangenIJournalEntry
Schnittstelle, implementiert von einem privatenJournalEntry
Klasse (trotz der letzten Anforderung in meiner Frage ...)