Jak ograniczyć dostęp do zagnieżdżonego członka klasy do klasy obejmującej?

Czy można określić, że członkowie klasy zagnieżdżonej mogą uzyskać dostęp do klasy obejmującej, ale nie do innych klas?

Oto ilustracja problemu (oczywiście mój rzeczywisty kod jest nieco bardziej złożony ...):

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; }
    }

    // ...
}

Chciałbym zapobiec tworzeniu przez klienta kodu instancjiJournalEntry, aleJournal musi być w stanie je stworzyć. Jeśli udostępnię konstruktorowi publicznie, każdy może tworzyć instancje ... ale jeśli uczynię go prywatnym,Journal nie będę w stanie!

Zauważ, żeJournalEntry klasa musi być publiczna, ponieważ chcę być w stanie ujawnić istniejące wpisy do kodu klienta.

Wszelkie sugestie będą mile widziane!

AKTUALIZACJA: Dziękuję wszystkim za wkład, w końcu poszedłem do publicznej wiadomościIJournalEntry interfejs, realizowany przez prywatnegoJournalEntry klasa (pomimo ostatniego wymogu w moim pytaniu ...)

questionAnswers(7)

yourAnswerToTheQuestion