c# - 类嵌套和访问修饰符

标签 c# class nested

我有以下代码:

class A
{
    public C GetC()
    {
        return new C();
    }
}

class B
{
    //has access to A but can not create C. Must ask A to create C.
    private void method()
    {
        A a = new A();
        C c = a.GetC();//Ok!
        C c2 = new C();//Not allowed.
    }
}

class C
{

}

应该在 C 上使用什么访问修饰符,以便只能通过 A 访问它? (只有A类知道如何正确初始化C类) 或者有更好的解决方案吗?

最佳答案

如果将 A 设为 C 中的嵌套类,它应该可以工作。

public class B
{
    //has access to A but can not create C. Must ask A to create C.
    private void method()
    {
        var a = new C.A();
        var c = a.GetC();//Ok!
        var c2 = new C();//Not allowed.
    }
}

public class C
{
    private C()
    {
    }

    public class A
    {
        public C GetC()
        {
            return new C();
        }
    }
}

关于c# - 类嵌套和访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599037/

相关文章:

Java 对象转换可能性的方法

java - ElasticSearch/Java 中日期的动态映射和嵌套排序

c# - 最快从搜索算法开始

c# - SshNet命令执行

c# - 如何在 ASP.NET Core Swagger (Swashbuckle.AspNetCore) 中定义 Controller 描述?

c++ - 如何将成员模板类声明为封闭类的友元?

templates - KnockoutJS - 嵌套模板中的可观察对象

c#: 切换大小写: if (case:)

c++ - 使用 Makefile 在多个文件 C++ 中构建互连类

php - 如何使 PHP 类属性只能通过类方法更改