Можно ли указать, что доступ к элементам вложенного класса может быть вызван окружающим классом, но не другими классами?
Вот иллюстрация проблемы (конечно, мой фактический код немного сложнее...):
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 должен быть общедоступным, потому что я хочу, чтобы он мог показывать существующие записи в код клиента.
Любое предложение будет оценено!
UPDATE: Спасибо всем за ваш вклад, я в конце концов пошел на общедоступный интерфейс IJournalEntry, реализованный частным классом JournalEntry (несмотря на последнее требование в моем вопросе...)
