public class A
{
    private void MethodA(){}
}

public class B
{
    private void MethodB() { }
}

public class C
{
    private void MethodC() { }
}


我想确保只能从MethodA调用MethodB。其他方法永远不能调用MethodA

最佳答案

使MethodA受保护并像这样使用继承:

public class A
{
    protected void MethodA()
    {
    }
}

public class B : A
{
    private void MethodB()
    {
        //MethodA is accessible just here
    }
}

public class C
{
    private void MethodC()
    {
        //MethodA is not accessible here
    }
}


但是,如果您不想使用继承并且希望所有类都在同一程序集中,则只能将类B嵌套在类A中,并保持MethodA私有。像这样:

public class A
{
    private void MethodA()
    {
    }
    public class B
    {
        private void MethodB()
        {
            A a = new A();
            a.MethodA();
        }
    }
}

public class C
{
    private void MethodC()
    {
        //MethodA is not accessible here
    }
}

public class D : A
{
    private void MethodC()
    {
        //MethodA is not accessible here
    }
}

关于c# - 如何确保只能从特定的类调用类的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35969018/

10-13 07:14