编程语言
首页 > 编程语言> > c#-防止从外部的第三类实例化在其外部的类中使用的内部类

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