是否有可能有一个嵌套类是公共(public)的,但只能由它的父类实例化 例如
public class parent
{
public class child
{
public string someValue;
}
public child getChild()
{
return new child();
}
}
在此示例中,“子”类可以由“父”外部的代码实例化。我希望外部代码能够查看“子”类型但不能构建它自己的类型。
例如
var someChild = new parent.child();
最佳答案
- 制作一个公共(public)界面。
- 将子类设为私有(private)。
- 让 child 实现接口(interface)。
- 让
getChild
方法创建一个新的 child 并返回接口(interface)类型。
如评论和其他答案中所述,您还可以将内部类构造函数的访问修饰符更改为内部或私有(private),同时将内部类本身保留为公共(public)。
关于只能由其父类实例化的 c# 公共(public)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620140/