在 C# 项目中添加新的命名空间

Adding new Namespace in C# Project

我想向 C# 项目添加一个新的命名空间,并且要在新创建的命名空间中添加 class 个。

当我右键单击项目的解决方案时,我没有找到任何link来添加新的命名空间,同样通过右键单击项目命名空间也是如此。

  • 如何为现有项目添加新的命名空间? 只需向您的项目添加一个新文件夹,您将在其中放置新的 classes。文件夹名称是命名空间的一部分:[projectname].[foldername]

  • 是否有必要在每个命名空间中有一个带有 Main 方法的 class? 不,一点也不。

  • 项目名称要和命名空间名称相同,那么如何在同一个项目中添加新的? 默认情况下,项目名称是命名空间的第一部分。文件夹也是命名空间的一部分,如下所示:[projectname].[foldername].[subfoldername].[etc]

请注意,您始终可以通过覆盖默认生成的命名空间来覆盖 classes 的命名空间:

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

在回答每个问题之前,我想从 MSDN 分享这个:

The namespace keyword is used to declare a scope that contains a set of related objects. You can use a namespace to organize code elements and to create globally unique types.

问题一

How to add a new namespace to existing project?

当您创建一个 class 时,您几乎可以将其放置在您喜欢的任何名称空间中,它可以完全组成或已经存在。

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

现在,这个 Something.That.No.One.Else.Has 命名空间在我的整个应用程序中都可用。我需要使用 using 语句来使用 FooBar class,除非使用的 class 在同一个命名空间中。

问题二

Is it necessary to have a class with Main Method in each namespace?

不,语言中没有内置强制要求。您可能正在考虑 static void Main 用于 .exe

问题3

The project name should be same as namespace name, then how to add new in same project?

正如我在 回答 1 中提到的,您可以简单地创建一个您认为合适的 namespace。出于组织原因,我建议开始一个新项目,因为这可能会使开始使用您的源代码的任何人感到困惑。

创建新项目时,遵循的命名约定是将项目的默认命名空间设置为项目名称。

更新

听了OP之后,我想我对困境有了更好的理解。

在您的项目中,您应该创建一个与文件关系及其各自实现相关的文件夹结构。遵循来自 Microsoft.

的推荐 practices and patterns
<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

文件夹结构(默认情况下)决定了 class 的 namespace。例如,当您右键单击该文件夹并 Add > New Item > Class - 它将在该文件夹中创建一个 class,但它会按照描述为其提供 namespace

其实我刚刚在我的WPF项目中遇到过这样的情况。也许,这不是我的情况的确切标题,但当我搜索它时,我找不到任何合适的解决方案。希望对其他人有帮助,

长话短说;

我在 'Solution' 下创建了一个新的 C# 项目。我只想使用新项目中包含的 class 定义之一。但是,即使我将以下代码片段添加到我的 .xaml 代码中,我也无法使用 'Path'.

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

所以我所做的只是将项目添加为对我的 Leading 项目的引用。