gpt4 book ai didi

C#如何将嵌套类的构造函数只暴露给父类的成员?

转载 作者:太空狗 更新时间:2023-10-30 01:30:45 34 4
gpt4 key购买 nike

基本上我想做的是

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)。我知道对于普通方法,您可以使用显式接口(interface)实现来实现,但它似乎不适用于构造函数。

最佳答案

您可以简单地返回一个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;
}
}

关于C#如何将嵌套类的构造函数只暴露给父类的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387392/

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