具有以下结构:
public class OuterClass {
public InnerClass foo {get; private set}
public OuterClass() {
foo = new InnerClass()
}
public class InnerClass {
sometype somevar;
public InnerClass()
}
}
如何从第三类限制对内部类构造函数的访问:
OuterClass outerclassinstance = new OuterClass();
outerclassinstance.foo.somevar; // allowed
OuterClass.Innerclass innerclassinstance = new Outerclass.InnerClass(); // not allowed
innerclassinstance.somevar // not allowed
如果我将InnerClass设为私有,则会收到“ foo”的不一致的可访问性错误,并且如果我也将foo设为私有,则自然无法从第三类访问它。
是否有可能或者我是否正在寻找完全不同的解决方案?有没有可以解决此问题的结构设计模式?
答案 0 :(得分:4)
尝试一下:
public interface IInnerClass {
}
public class OuterClass {
public IInnerClass foo {get; private set;}
public OuterClass() {
foo = new InnerClass();
}
private class InnerClass : IInnerClass {
sometype somevar;
public InnerClass(){}
}
}
您的InnerClass是私有的,但是您可以对其使用公共接口。
答案 1 :(得分:0)
这可能会有所帮助:
public class OuterClass {
public InnerClass foo {get; private set}
public OuterClass() {
foo = new InnerClass()
}
public class InnerClass {
protected sometype somevar;
protected InnerClass()
}
}