Имеет ли смысл в том, чтобы пространство имен было внутренним в C #? - PullRequest
1 голос
/ 25 мая 2011

Я пишу библиотеку классов и столкнулся с необходимостью сделать внутреннее пространство имен.Я делаю это, потому что есть какой-то автоматически сгенерированный код, поступающий из XSD, чтобы не было коллизий.

Однако имеет ли смысл вообще желать, чтобы пространство имен было внутренним?Я знаю, что это невозможно.Я прочитал это ( Внутреннее пространство имен для .Net? ), среди прочего.

Я спрашиваю, если вы считаете, что хотите / нуждаетесь во внутреннем пространстве имен, что можно улучшить вваша архитектура / дизайн?Что мне нужно передвигать, чтобы избавиться от ложной необходимости иметь внутреннее пространство имен?

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Нет, сами пространства имен не имеют особой доступности.Доступны только члены пространства имен (в основном, типы).Вместо этого просто сделайте все типы в пространстве имен внутренними.

1 голос
/ 25 мая 2011

Используйте атрибут /namespace:<namespace>, когда вы генерируете классы из XSD, используя инструмент xsd.exe.

Инструмент определения схемы XML (Xsd.exe)

/n[amespace]:namespace - Указывает пространство имен времени выполнения для сгенерированных типов.

Если у вас есть типизированный DataSet, сгенерированный на основе XSD, вы можете изменить Customer Tool Namepsace в свойствах DataSet.

Такжеесли ваш код не привязан к автоматически сгенерированному DataSet и инструменту разработки, вы можете просто изменить пространство имен вручную, если вам не нужно часто генерировать классы.

Если вам нужно часто генерировать классы, сделайтефайл bat (cmd), который запускает xsd.exe с требуемыми пространствами имен и именами классов.

Кроме того, если сериализовать / десериализовать XML с помощью XmlSerializer, вы не можете сделать классы внутренними.

...