Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#项目中添加新名称空间_C#_Namespaces_Project_Add - Fatal编程技术网

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

在C#项目中添加新名称空间,c#,namespaces,project,add,C#,Namespaces,Project,Add,我想给C#项目添加一个新的名称空间,还要在新创建的名称空间中添加一些类 当我右键单击项目的解决方案时,并没有找到任何添加新名称空间的链接,类似地,我也右键单击名为namespace的项目 如何向现有项目添加新名称空间 是否需要在每个命名空间中都有一个带有Main方法的类 项目名称应与命名空间名称相同,然后如何添加 同一项目中的新项目 如何向现有项目添加新名称空间? 只需在项目中添加一个新文件夹,您将在其中放置新类。然后,文件夹名称是命名空间:[projectname].[foldername

我想给C#项目添加一个新的名称空间,还要在新创建的名称空间中添加一些类

当我右键单击项目的解决方案时,并没有找到任何添加新名称空间的链接,类似地,我也右键单击名为namespace的项目

  • 如何向现有项目添加新名称空间

  • 是否需要在每个命名空间中都有一个带有Main方法的类

  • 项目名称应与命名空间名称相同,然后如何添加 同一项目中的新项目

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

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

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

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

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

      在回答每个问题之前,我想与大家分享一下MSDN中的内容:

      关键字用于声明包含一组相关对象的范围。您可以使用命名空间来组织代码元素并创建全局唯一的类型

      问题1

      如何向现有项目添加新名称空间

      当您创建一个类时,您可以将它放置在几乎任何您想要的名称空间中,它可以是完全组成的,也可以是已经存在的名称空间

      namespace Something.That.No.One.Else.Has
      {
          public class FooBar() { }
      }
      
      现在,这个
      Something.That.No.One.Else.Has
      命名空间在我的整个应用程序中都是可用的。我需要使用
      using
      语句来消费
      FooBar
      类,除非消费类位于同一命名空间中

      问题2

      是否需要在每个命名空间中都有一个带有Main方法的类

      不,语言中没有要求强制执行此操作。对于
      .exe
      ,您可能正在考虑使用
      静态void Main

      问题3

      项目名称应与命名空间名称相同,那么如何在同一项目中添加新名称

      正如我在回答1中提到的,您可以简单地创建一个您认为合适的
      名称空间
      。出于组织上的原因,我建议您启动一个新项目,因为这可能会让任何在您的源代码中开始工作的人感到困惑

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

      更新

      在听到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
      |   +-- ...
      
      (|)[.]
      .
      +--图表
      |+--SomeGraphClass.cs//位于CompanyName.Product.Graphs命名空间中
      |   +-- ...
      +--资料
      |+--SomeDataClass.cs//位于CompanyName.Product.Data命名空间中
      |   +-- ...
      +--接口
      |+--IFooBar.cs//位于CompanyName.Product.Interfaces命名空间中
      |   +-- ...
      
      更新2


      文件夹结构(默认情况下)指定类的
      名称空间
      。例如,当您右键单击文件夹并
      Add>newitem>Class
      时,它将在该文件夹中创建一个类,但它将为其提供所述的
      名称空间

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

      长话短说

      我在“解决方案”下创建了一个新的C#项目。我只想使用新项目中包含的一个类定义。但是,即使我在.xaml代码中添加以下代码段,我也无法使用“路径”

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

      因此,我所做的只是添加项目作为对我主要项目的引用。

      @ZiNNED——如果我们在新添加的文件夹中添加4个类,其中4个类中的每一个都必须实现一个
      接口,那么在哪里定义该接口呢?在每个类中,要定义相同的
      接口
      ,将接口放在何处并不重要。只要在使用它的类中引用它。接口可以存在于其自己的命名空间或文件夹中,例如
      [projectname].interfaces
      。然后在类中,您在
      using
      部分引用该名称空间,例如:
      using[projectname].interfaces
      @ZiNNED——如果我们按照您的建议为接口创建一个单独的文件夹,那么我们是否必须首先在“interfaces”文件夹中定义一个类,然后在该类中定义一个接口,或者我们可以直接在该文件夹中定义一个接口?您可以通过右键单击该文件夹直接添加一个接口,选择
      Add
      ->
      newitem…
      ,然后选择
      visualc#
      ->
      code
      ,并选择
      接口
      类型。@David--因为我想把我的一些项目类分开,因为它们与图形实现有关,所以这些类放在哪里以及如何放?不在单独的名称空间中?我将稍微更新我的答案,因为我认为我更了解您所处的困境。@David--正如您在更新中建议的,将图形相关的实现放在
      CompanyName.Product.Graphs
      名称空间中,那么
      Graphs
      是文件夹还是名称空间?这就是我要问的问题:如何在同一个项目中添加新的命名空间?@David-