it-roy-ru.com

Добавление нового пространства имен в C # Project

Я хочу добавить новое пространство имен в проект C #, а также количество классов, которые будут добавлены в этом недавно созданном пространстве имен. 

Когда я щелкнул правой кнопкой мыши Решение проекта, я не нашел ни одной ссылки для добавления нового пространства имен, аналогично щелкнув правой кнопкой мыши также пространство имен Project-Named. 

  • Как добавить новое пространство имен в существующий проект? 

  • Нужно ли иметь класс с методом Main в каждом пространстве имен?

  • Имя проекта должно совпадать с именем пространства имен, тогда как добавить new в тот же проект?

6
maliks

Прежде чем ответить на каждый из вопросов, я хотел бы поделиться этим с MSDN:

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

Вопрос 1

Как добавить новое пространство имен в существующий проект?

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

namespace Something.That.No.One.Else.Has
{
    public class FooBar() { }
}

Теперь это пространство имен Something.That.No.One.Else.Has доступно во всем моем приложении. И мне нужно использовать оператор using для того, чтобы использовать класс FooBar, если только потребительский класс не находится в том же пространстве имен.

Вопрос 2

Нужно ли иметь класс с методом Main в каждом пространстве имен?

Нет, в язык не заложено требование, которое бы навязывало это. Вы, вероятно, думаете о static void Main для .exe.

Вопрос 3

Имя проекта должно совпадать с именем пространства имен, тогда как добавить новое в тот же проект?

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

При создании нового проекта соблюдаются следующие правила именования: для пространства имен проекта по умолчанию задается имя проекта.

Обновление

Выслушав OP, я думаю, что у меня есть лучшее понимание дилеммы.

В вашем проекте вы должны создать структуру папок, которая имеет отношение к отношениям файлов и их соответствующих реализаций. Следуя рекомендуемым практикам и шаблонам от Microsoft.

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

.
+-- Graphs
|   +-- SomeGraphClass.cs // in CompanyName.Product.Graphs namespace
|   +-- ...
+-- Data
|   +-- SomeDataClass.cs  // in CompanyName.Product.Data namespace
|   +-- ...
+-- Interfaces
|   +-- IFooBar.cs        // in CompanyName.Product.Interfaces namespace
|   +-- ...

Обновление 2

Структура папок (по умолчанию) определяет namespace класса. Например, когда вы щелкнете правой кнопкой мыши по папке и Add > New Item > Class - она ​​создаст класс в этой папке, но даст ему namespace, как описано.

8
David Pine
  • Как добавить новое пространство имен в существующий проект? Просто добавьте в свой проект новую папку, в которую вы будете помещать новые классы. Имя папки является частью пространства имен: [имя проекта]. [Имя_фолдера]

  • Нужно ли иметь класс с методом Main в каждом пространстве имен? Нет, совсем нет.

  • Имя проекта должно совпадать с именем пространства имен, тогда как добавить новое в тот же проект? По умолчанию имя проекта является первой частью пространства имен. Папки также являются частью пространства имен, например: [projectname]. [Foldername]. [Subfoldername]. [Etc]

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

namespace Foo.Bar
{
    public class FooBar
    {
        ...
    }
}
2
ZiNNED

На самом деле, я только что столкнулся с такой ситуацией в моем проекте WPF. Возможно, это не точное название для моей ситуации, но когда я искал это, я не мог найти правильных решений для этого. Надеюсь, это поможет другим,

Короче;

Я создал новый проект C # под моим «Решением». И я просто хотел использовать одно из определений классов, которое было включено в новый проект. Однако даже если я добавлю следующий фрагмент в свой код .xaml, я не смог использовать «Путь».

xmlns:Path="clr-namespace:namespace;Assembly=namespace"

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

0
cooleng