Как ограничить доступ к вложенному члену класса вмещающему классу?

Можно ли указать, что члены вложенного класса могут быть доступны для включающего класса, но не для других классов?

Вот's иллюстрация проблемы (конечно, мой фактический код немного более сложен ...):

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

    // ...
}

Я бы хотел, чтобы клиентский код не создавал экземплярыJournalEntry, ноJournal должен быть в состоянии создать их. Если я сделаю конструктор общедоступным, любой сможет создать экземпляры ... но если я сделаю его приватным,Journal победил'не сможет!

Обратите внимание, чтоJournalEntry класс должен быть общедоступным, потому что я хочу иметь возможность выставлять существующие записи клиентскому коду.

Любое предложение будет оценено!

ОБНОВЛЕНИЕ: Спасибо всем за Ваш вклад, я в конечном счете пошел для общественностиIJournalEntry интерфейс, реализованный частнымJournalEntry класс (несмотря на последнее требование в моем вопросе ...)

Ответы на вопрос(7)

Ваш ответ на вопрос