c#-防止从外部的第三类实例化在其外部的类中使用的内部类
作者:互联网
具有以下结构:
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设为私有,则自然无法从第三类访问它.
甚至有可能还是我应该寻找完全不同的解决方案?有没有可以解决此问题的结构设计模式?
解决方法:
尝试这个:
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是私有的,但是您可以对其具有公共接口.
标签:instantiation,inner-classes,c 来源: https://codeday.me/bug/20191025/1925954.html