【发布时间】:2010-12-12 11:54:12
【问题描述】:
是否可以指定嵌套类的成员可以被封闭类访问,但不能被其他类访问?
这是一个问题的说明(当然我的实际代码有点复杂......):
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(object) 构造函数设为“内部”;这将阻止其他程序集实例化日记帐分录,但同一程序集中的其他类仍然可以创建它们;但是,如果您是程序集的作者,这可能就足够了。
-
是的,我想到了,但我宁愿即使在同一个程序集中也无法创建实例......无论如何,谢谢!
标签: c# nested-class access-levels