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 ...)

Antworten auf die Frage(7)

Ihre Antwort auf die Frage