Como restringir o acesso ao membro da classe aninhada à classe de inclusão?

É possível especificar que os membros de uma classe aninhada podem ser acessados ​​pela classe envolvente, mas não por outras classes?

Aqui está uma ilustração do problema (claro que meu código atual é um pouco mais complexo ...):

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

    // ...
}

Eu gostaria de impedir que o código do cliente criasse instâncias deJournalEntry, masJournal deve ser capaz de criá-los. Se eu fizer o construtor público, qualquer um pode criar instâncias ... mas se eu torná-lo privado,Journal não será capaz de!

Note que oJournalEntry A classe deve ser pública, porque quero poder expor as entradas existentes ao código do cliente.

Qualquer sugestão será apreciada !

ATUALIZAÇÃO: Obrigado a todos por sua contribuição, eu finalmente fui para o públicoIJournalEntry interface, implementada por umJournalEntry classe (apesar do último requisito na minha pergunta ...)

questionAnswers(7)

yourAnswerToTheQuestion