是否可以指定嵌套类的成员可以被封闭类访问,但不能被其他类访问?
这是问题的说明(当然我的实际代码有点复杂......):
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
必须能够创建它们。如果我将构造函数公开,任何人都可以创建实例...但如果我将其设为私有(private),Journal
将无法创建实例!
请注意,JournalEntry
类必须是公共(public)的,因为我希望能够将现有条目公开给客户端代码。
如有任何建议,我们将不胜感激!
更新:感谢大家的意见,我最终选择了公共(public) IJournalEntry
接口(interface),由私有(private) JournalEntry
类实现(尽管我的问题中有最后一个要求...... .)
最佳答案
其实这个问题有一个完整而简单的解决方案,不涉及修改客户端代码或创建接口(interface)。
在大多数情况下,此解决方案实际上比基于接口(interface)的解决方案更快,并且更易于编码。
public class Journal
{
private static Func<object, JournalEntry> _newJournalEntry;
public class JournalEntry
{
static JournalEntry()
{
_newJournalEntry = value => new JournalEntry(value);
}
private JournalEntry(object value)
{
...
关于c# - 如何将对嵌套类成员的访问限制为封闭类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1664793/