2011-12-20 114 views
1

是否有可能在C#中聲明只能在其名稱空間內使用的類?聲明名稱空間中的類

實施例:

namespace a 
{ 
    public class Dog 
    { 
     public void sayHello() 
     { 
      System.Console.WriteLine('hello'); 
     } 
    } 
} 

namespace b 
{ 
    public class DogWalker   
    { 
     public void Walk() 
     { 
      Dog dog = new Dog(); 
      dog.sayHello(); 
     } 
    } 
} 

namespace a 
{ 
    public class DogWalker 
    { 
     public void Walk() 
     { 
      Dog dog = new Dog(); 
      dog.sayHello(); 
     } 
    } 
} 

在命名空間B中的DogWalker應扔在編譯錯誤消息以上的情況下,但在DogWalker命名空間應該被允許從它的相同的命名空間的狗。

如果有人能指出我正確的方向,那將是非常感謝。

回答

5

您可以通過將類分成不同的程序集並聲明它們爲internal來實現此目的。

+0

謝謝,有道理。在同一個組件中沒有辦法做到這一點嗎? – user1051218

+0

@ user1051218:不這麼認爲。 – Nayan

0

是否有可能在C#中聲明一個僅在其命名空間內有效使用 的類?

是的。你的類爲internal

+0

http://msdn.microsoft.com/en-us/library/7c5ka91b%28v=VS.100%29.aspx說內部是有效的程序集,而不是名稱空間。 – Nayan

+0

@Nayan請看這個問題。 –

0

你需要改變你的類的「公共」訪問修飾符「內部」。