ネストされたクラスのメンバーは、それを囲むクラスからはアクセスできるが、他のクラスからはアクセスできないように指定することはできますか?
これが問題の図です(もちろん、私の実際のコードはもう少し複雑です...):
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
既存のエントリをクライアント コードに公開できるようにするため、クラスはパブリックである必要があることに注意してください。
任意の提案をいただければ幸いです!
更新: ご意見をお寄せいただきありがとうございます。私は最終的にIJournalEntry
、プライベート クラスによって実装されたパブリック インターフェイスを選択しましたJournalEntry
(私の質問の最後の要件にもかかわらず...)。