C#限制哪些类可以调用方法

时间:2014-02-14 23:12:07

标签: c#

我希望能够限制哪些类有权调用另一个类的方法。我有以下内容:

public class A: B
{
    private void DoSomething()
    {
        C.Method1(); // should compile
    }
}

public abstract class B
{

}

public class D
{
    private void DoSomething()
    {
        C.Method1(); // shouldn't compile
    }
}

public static class C
{
    public static void Method1()
    {

    }

    public static void Method2()
    {
       ...
       Method1();
       ...
    }

}

所有这些类都在同一个程序集中,但是B类在不同的程序集中。

我的目标是让A级能够调用C.Method1,但让D级无法调用C.Method1

我在考虑将C类作为父类,并让A类继承B类,但A类已经从B类继承。

Method1不属于A类或B类。

实际用途是当Method1是一个实用方法时,只能由A类和C类调用

1 个答案:

答案 0 :(得分:3)

如果没有移动方法,则必须使C非 - static,使Method1 protected,然后B继承C 1}},看起来像:

public class A : B
{
    private void DoSomething()
    {
        C.Method1(); // should compile
    }
}

public abstract class B : C
{
}

public class D
{
    private void DoSomething()
    {
        C.Method1(); // shouldn't compile
    }
}

public class C
{
    protected static void Method1()
    {
    }
}