4

是否有可能有一个公共的嵌套类,但只能由它的父类实例化,例如

 public class parent
{
    public class child
    {
        public string someValue;
    }

    public child getChild()
    {
        return new child();
    }
}

在这个例子中,'child' 类可以由 'parent' 外部的代码实例化。我希望外部代码能够查看“子”类型,但不能构建它自己的类型。

例如

var someChild = new parent.child();
4

3 回答 3

15
  1. 创建一个公共接口。
  2. 将子类设为私有。
  3. 让孩子实现接口。
  4. 让该getChild方法创建一个新子项并返回接口类型。

如评论和其他答案中所述,您还可以将内部类的构造函数上的访问修饰符更改为 internal 或 private,同时使内部类本身公开。

于 2012-05-16T13:59:39.570 回答
4

定义一个内部空构造函数

public class child     
{         
    internal child() {}
    public string someValue;     
}  
于 2012-05-16T14:02:32.323 回答
2

您可以通过将构造函数(子类的)的保护级别设置为internal.

或@Servy 告知的界面。

于 2012-05-16T14:02:24.580 回答