Глупый вопрос о пространстве имен - PullRequest
1 голос
/ 11 ноября 2010

Хорошо, у меня есть проект ac # с именем BusinessLayer, который создает сборку с именем BusinessLayer, а пространство имен - BusinessLayer.

Внутри этого проекта я использую папки для хранения кода.Одна папка называется FilterElements и содержит папки FilterKeyReversal, FilterRandom и FilterToday.

Давайте рассмотрим пример папки FilterRandom.У него есть класс LessThan10DaysGreaterThan50A с пространством имен BusinessLayer.FilterElements.FilterRandom и один общедоступный статический метод RunFilter ();

В коде страницы веб-сайта, который использует этот метод, я используюзаявление, используя BusinessLayer.У меня также есть другой оператор using, использующий BusinessLayer.FilterElements.

Я думаю, что для предоставления метода RunFilter () класса LessThan10DaysGreaterThan50A я мог бы использовать следующий синтаксис: FilterRandom.LessThan10DaysGreaterThan50A.RunFilter ()Я получаю следующую ошибку: имя FilterRandom не существует в текущем контексте.

Если я использую следующий встроенный синтаксис, ошибка исчезнет: BusinessLayer.FilterElements.FilterRandom.LessThan10DaysGreaterThan50A.RunFilter () или, еслиЯ использую оператор использования: Используя BusinessLayer.FilterElements.FilterRandom, работает следующий синтаксис: LessThan10DaysGreaterThan50A.RunFilter ().

Я бы предпочел использовать FilterRandom.LessThan10DaysGreaterThan50A.RunFilter, чтобы сделать его более читаемым, чтобы его можно было читать больше,Если я использую псевдоним со следующим синтаксисом использования FilterRandom = BusinessLayer.FilterElements.FilterRandom, я могу получить то, что хочу, но мне не очень нравится идея использования псевдонима, так как это может привести к путанице.

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Пожалуйста, смотрите этот пост ...

Ссылки на пространства имен в C # против VB.Net

1 голос
/ 11 ноября 2010

Нет, это не так. Я знаю, это очень раздражает.

Моя первая попытка решить эту проблему (у меня была та же проблема) добавляла следующие значения:

using FilterRandom = BusinessLayer.FilterElements.FilterRandom;

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

Как я навсегда решил эту проблему, изменив пространства имен в проекте так, чтобы, в вашем примере, FilterRandom, например, быть в BusinessLayer.

Проблема, которую вы на самом деле видите, состоит в том, что у вас слишком много пространств имен. Это не странно, так бывает. Они являются отличным способом организации вашего кода и классов, и это не так сложно сделать так, чтобы они вышли из-под контроля. Под изменением пространств имен я подразумеваю, что я объединил много маленьких пространств имен в более крупные. Иногда это означает переименование классов, но я считаю, что имя класса само по себе должно быть значимым, без префикса пространства имен.

Таким образом, я навсегда решил эти проблемы в своем проекте (60kloc), и он отлично работал.

...