2014-02-14 90 views
2

我希望能夠限制哪些類可以調用另一個類的方法。我有以下內容: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類繼承

方法1不中A類屬於或B.

這樣做的一個實際應用是,當方法1是一種實用工具方法,並且只能由被稱爲A級和C級

+2

如何移動方法一類A? –

+0

您只能通過程序集(例如'internal')或繼承(例如'protected')應用[訪問修飾符限制](http://msdn.microsoft.com/zh-cn/library/wxh6fsc7.aspx)。 C#中沒有「朋友」註釋。 – user2864740

+1

我喜歡你的問題,但我想知道你爲什麼要這樣做。只是要知道這是一個很好的問題還是具有實際用途。 –

回答

3

沒有移動方法消耗臭氧層物質的身邊,你就必須做出Cstatic,使Method1protected,然後讓B繼承C,這看起來像:

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() 
    { 
    } 
} 
相關問題