public class A
{
private void MethodA(){}
}
public class B
{
private void MethodB() { }
}
public class C
{
private void MethodC() { }
}
我想确保只能从MethodA
调用MethodB
。其他方法永远不能调用MethodA
。
答案 0 :(得分:3)
使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
}
}
答案 1 :(得分:2)
我注意到S.Akbari的回答虽然不错,但并不完全符合您的要求。您说您希望MethodA
仅在B
内可调用,但在答案中,MethodA
可在A
内调用。
您实际提出的问题的解决方案是反转嵌套:
class B
{
private class A
{
public void MethodA() { }
}
}
现在只能在MethodA
内调用B
。
但问题很奇怪。如果您的方法只能从B
调用,那为什么它不是B
的成员?