Объявление классов в пространствах имен - PullRequest
1 голос
/ 20 декабря 2011

Можно ли объявить класс в 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();
        }
    }
}

В приведенном выше случае DogWalker в пространстве имен b должен выдать сообщение об ошибке при компиляции, но DogWalker в пространстве имен a должен быть разрешен, поскольку он находится в том же пространстве имен, что и Dog.

Если кто-нибудь и укажет мне правильное направление, это будет высоко оценено.

Ответы [ 4 ]

5 голосов
/ 20 декабря 2011

Этого можно добиться, разделив классы на разные сборки и объявив их как internal.

0 голосов
/ 20 декабря 2011

вам нужно изменить «публичные» модификаторы доступа ваших классов на «внутренние».

0 голосов
/ 20 декабря 2011
0 голосов
/ 20 декабря 2011

Можно ли объявить класс в C #, который является допустимым только для использования в пределах своего пространства имен?

Да. Отметьте свой класс как internal

...