基本上我想做的是
class Parent{
public class Nested {
private Nested(){
//do something
}
/* ??? */ Nested CreateNested(){
return new Nested ();
}
}
public Nested Foo(){
Nested n = (???).CreateNested ();
// do something about n
return n;
}
}
以便Parent
类的用户可以看到Nested
类,但无法创建它(但是他们可以从Parent
获取它)。我知道对于普通方法,您可以使用显式接口实现,但它似乎不适用于构造函数。
答案 0 :(得分:3)
您只需返回INested
,即可将嵌套类标记为private
;因此,只有Parent
可以访问该类。你最终得到这样的东西:
public class Parent
{
public interface INested
{
}
private class Nested : INested
{
public Nested()
{
}
}
public INested Foo()
{
Nested n = new Nested();
// do something about n
return n;
}
}