是否可以指定一个嵌套类的成员可以通过封装类访问,而不是其他类?如何限制对嵌套类成员的访问以封闭类?
这里的问题的解释(当然我的实际代码是更复杂一点...):
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