C # внутренние модификаторы доступа - PullRequest
4 голосов
/ 19 января 2009

Я хочу запечатать классы в пространстве имен. Я смотрел на «внутренний» модификатор доступа, но это только похоже на печать классов в сборке. Могу ли я запечатать классы в пространстве имен?

Или мне нужно переместить материал в отдельную сборку? Но тогда у меня будет проблема с визуальной студией, отказывающейся от ссылок на круглые сборки.

Ответы [ 3 ]

3 голосов
/ 19 января 2009

Нет, модификатор для пространства имен отсутствует. Одним из вариантов будет использование наследования и модификатора «protected», но с внутренним конструктором в базовом классе, чтобы внешний код не мог его подклассовать. Это может помочь.

2 голосов
/ 19 января 2009

Это невозможно с C #.

Членами уровня пространства имен могут быть только public или internal

Однако вы можете использовать вложенный класс в C #

namespace A {
    public class B {

        protected class C { }
    }

    public class D {

        void E() {
            var F = new A.B();    // ok!
            var G = new A.B.C();  // error!
        }
    }
}
0 голосов
/ 19 января 2009

Вы по-прежнему можете использовать ключевое слово internal и предоставлять внутренние классы другой сборке через атрибут InternalsVisibleTo в файле AssemblyInfo.cs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...