是否可以指定一個嵌套類的成員可以通過封裝類訪問,而不是其他類?如何限制對嵌套類成員的訪問以封閉類?
這裏的問題的解釋(當然我的實際代碼是更復雜一點...):
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
類實現(儘管我的問題最後的要求...)
你可以使JournalEntry的(對象)構造 '內部';這會阻止其他程序集實例化日記條目,但同一程序集中的其他類仍然可以創建它們;但是如果你是組件的作者,這可能就足夠了。 – 2009-11-03 02:24:00
是的,我想到了這一點,但我寧願無法在同一個程序集中創建實例......無論如何,謝謝! – 2009-11-03 03:17:33