gpt4 book ai didi

c# - 防止从第三个外部类实例化在其外部类中使用的内部类

转载 作者:行者123 更新时间:2023-11-30 15:15:54 24 4
gpt4 key购买 nike

结构如下:

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 设为私有(private),我会收到“foo”的不一致可访问性错误,如果我也将 foo 设为私有(private),它自然无法从第三类访问。

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

最佳答案

试试这个:

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 是私有(private)的,但你可以有一个公共(public)接口(interface)。

关于c# - 防止从第三个外部类实例化在其外部类中使用的内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51151003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com