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 是私有的,但您可以拥有一个公共接口。
推荐阅读
- windows-xp - Delphi 6 TQuery 无法在一台 Windows XP 机器上修改只读数据集
- java - Jboss java.lang.OutOfMemoryError:Java 堆空间
- javascript - 如何将 webpack 哈希名称添加到服务工作者文件?
- c# - Xamarin.Forms FlexLayout 调整为最大值
- javascript - JavaScript:检查所有数组是否包含相同的值?
- asp.net-core - asp-route-* 不在视图组件的视图内呈现查询字符串
- android - 谷歌地图自定义标记图标大小未在 Android 上保留
- powershell - 如何使用 Powershell 中的变量将一系列文件移动到文件夹中?
- python - 如何在 Keras 中正确连接 Dense 层和 Lambda 层?
- css - 2个宽度和超过三分之一宽度的媒体查询