¿Cómo restringir el acceso al miembro de la clase anidada a la clase adjunta?

¿Es posible especificar que se pueda acceder a los miembros de una clase anidada por la clase adjunta, pero no a otras clases?

Aquí hay una ilustración del problema (por supuesto, mi código real es un poco más complejo ...):

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

    // ...
}

Me gustaría evitar que el código del cliente cree instancias deJournalEntry, peroJournal debe ser capaz de crearlos. Si hago público al constructor, cualquiera puede crear instancias ... pero si lo hago privado,Journal no podrá!

Tenga en cuenta que elJournalEntry la clase debe ser pública, porque quiero poder exponer las entradas existentes al código del cliente.

Cualquier sugerencia sería apreciada!

ACTUALIZACIÓN: Gracias a todos por su aporte, finalmente fui al público.IJournalEntry interfaz, implementado por un privadoJournalEntry clase (a pesar del último requisito en mi pregunta ...)

Respuestas a la pregunta(7)

Su respuesta a la pregunta