Должен ли класс иметь то же имя, что и пространство имен? - PullRequest
5 голосов
/ 26 ноября 2009

Я проектирую пространство имен для хранения набора классов, которые будут обрабатывать пользовательские связанные задачи для нескольких различных приложений. (вход, аутентификация и т. Д.)

Проблема в том, что пространство имен будет называться Fusion.User, но тогда ему требуется класс в этом пространстве имен, который имеет смысл для вызова User.

Если у вас есть класс с тем же именем, что и пространство имен? Или я ошибаюсь?

Ответы [ 5 ]

1 голос
1 голос
/ 26 ноября 2009

В некоторых случаях использование одного и того же имени может вызвать проблемы. Тот, который сразу же приходит на ум, - это использование службы WCF. Когда я сделал это недавно в классе с именем «someBehaviour» в пространстве имен «companyName.someBehaviour» для использования «MyService», компилятор сказал мне, что MyService не существует в пространстве имен someBehaviour. Изменение имени класса на что-то другое (и гораздо более полезное) решило проблему и позволило мне скомпилировать сборку.

1 голос
/ 26 ноября 2009

Наличие класса, названного так же, как пространство имен (пакет), может привести к мысли, что класс является центральным для пакета. Но если я правильно понял, пользователь - это просто объект данных в вашем случае.

Насколько я вижу, у вас есть 2 варианта:

  1. Назовите свое пространство имен по-другому, например, Fusion.Security
  2. Используйте суффикс для имени класса, указывающий его назначение, например. UserDTO, UserAction и т. Д.
1 голос
/ 26 ноября 2009

Пространство имен Fusion.User
Полное имя класса будет Fusion.User.User

Полезно отличать их от других, потому что

  1. Это позволяет избежать путаницы с разработчиком
  2. В некоторых случаях это выглядит ужасно, например, здесь мы используем двух пользователей.

    с использованием Fusion;
    пространство имен xyz {
    тест открытого класса
    {
    User.User userObject {get; set;}
    }
    } < бр /> Поэтому лучшим вариантом было бы использовать разные имена

0 голосов
/ 26 ноября 2009

Я бы, вероятно, назвал пространство имен 'usertasks', чтобы избежать путаницы. Вам нужно будет регулярно квалифицировать внутренний класс, используя пространство имен, чтобы не запутать компилятор.

...