如何在c#中按所有者控制类可见性

Yek*_*oor 4 c# visibility class

通常我希望某些类C1的某些(或所有)函数只能从另一个类C2中访问,因为C2是一种代理,它拥有C1类型的对象(例如:类"神经元"的方法,如" connect()",只能从"Brain"访问.我认为与C#不同,这与继承不同,我们可以使用像"private"或"protected"这样的关键字来指定可见性.

在这种情况下,最佳做法是什么?

Cod*_*ter 5

为您的类创建一个程序集,并声明外部世界不应该看到的内部类internal:

内部(C#参考):

internal关键字是类型和类型成员的访问修饰符.内部类型或成员只能在同一程序集中的文件中访问

所以,像这样:

namespace YourAssembly.Classes
{
    internal class C1
    {
        public void Foo()
        {

        }
    }

    public class C2
    {
        public void DoFoo()
        {
            new C1().Foo();     
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

C2可以从其他程序集访问此处,但C1只能在同一程序集中访问.