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 ...)