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