c#public class,只能由其父实例化实例化

时间:2012-05-16 13:57:40

标签: c# oop

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

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

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

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

e.g

var someChild = new parent.child();

3 个答案:

答案 0 :(得分:14)

  1. 制作公共界面。
  2. 将子类设为私有。
  3. 让孩子实现界面。
  4. getChild方法创建一个新子节点并返回接口类型。
  5. 正如评论和其他答案中所提到的,您还可以将内部类的构造函数上的访问修饰符更改为内部或私有,同时将内部类本身公开。

答案 1 :(得分:4)

定义内部空构造函数

public class child     
{         
    internal child() {}
    public string someValue;     
}  

答案 2 :(得分:2)

您可以通过将构造函数(子类的保护级别)设置为internal来将创建限制为程序集。

或@Servy告诉界面。