2011-12-20 112 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

你需要改变你的类的“公共”访问修饰符“内部”。