首页 > 解决方案 > 防止从第三个外部类实例化在其外部类中使用的内部类

问题描述

具有以下结构:

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 设为私有,它自然无法从第三类访问。

甚至有可能还是我应该寻找完全不同的解决方案?是否有解决此问题的结构设计模式?

标签: c#instantiationinner-classes

解决方案


试试这个:

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 是私有的,但您可以拥有一个公共接口。


推荐阅读