代码之家  ›  专栏  ›  技术社区  ›  Aeseir

类和命名空间的引用Visual Studio 2017

  •  1
  • Aeseir  · 技术社区  · 6 年前

    我注意到在我的小项目中,当导入类时,有些使用完整的文件夹引用,而另一些则不使用。 这是我正在研究的迷你项目的代码。

    模型文件夹 包含两个实体,auto和airplane

    namespace Mini.Models {
         public class Auto {
             // code and stuff
         }
    }
    
    namespace Mini.Models {
         public class Airplane {
             // code and stuff
         }
    }
    

    服务文件夹 包含单个服务类

    namespace Mini.Services
    {
       public class AutoService : IAutoService {
          public bool Get() {
                var autoObject = new Models.Auto();   // notice how it references Models folder
                var planeObject = new Airplane();  // Same folder but not referencing Models in front of it      
                // other code
          }
       }
    
       public interface IAutoService {
          bool Get();
          // others
       }
    }
    

    虽然不是一个主要的错误,但在同一个文件夹中的两个类被不同的引用仍然是令人恼火的,我不明白为什么。

    任何建议都将不胜感激。

    删除模型文件夹时出现错误消息

    Error CS0118: 'Auto' is a namespace but is used like a type (34, 27)
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   ProgrammingLlama Raveena Sarda    6 年前

    根据您提供的错误消息:

    Error CS0118: 'Auto' is a namespace but is used like a type (34, 27)
    

    似乎有一个名为 Auto 是的。想象一下下面的例子:

    namespace MyApp.Auto
    {
        class Test
        {
        }
    }
    
    namespace MyApp
    {
        class Auto
        {
        }
    
        class MyTest
        {
            private Auto test;
        }
    }
    

    因为你可以看到,从 MyApp 命名空间,都是一个名为 汽车 一个名为 汽车 (或者 namespace MyApp.Auto 或者只是 namespace Auto ),C#不确定你想要哪一个因此,它迫使你在选择一个或另一个时要特别。

    最简单的解决方案是 MyApp.Auto 命名空间到其他对象。

        2
  •  0
  •   Jophy job    6 年前

    这不是修复,而是用适当的代码示例解释(以及原因)。

    namespace Mini.Models
    {
        public class Auto
        {
            // code and stuff
        }
    }
    
    namespace Mini.Models
    {
        public class Airplane
        {
            // code and stuff
        }
    }
    
    namespace Mini.Auto
    {
        public class OtherAirplane
        {
            // code and stuff
        }
    }
    
    namespace Mini
    {
        using Mini.Models;
        using namespaceAuto = Auto ; /// this also not fix the issue.
    
        class NamespaceIssue
        {
            void execute()
            {
                var autoObject = new Auto();   // Error 
                var planeObject = new Airplane();  // Same folder but not referencing Models in front of it      
                // other code
            }
        }
    }
    

    现在您可以看到一些代码中有“Mini.Auto”名称空间,这是couching问题。

    我测试的VS2015也有同样的问题也许我们必须向vs团队汇报,或者是设计的。

        3
  •  0
  •   Aeseir    6 年前

    问题似乎在于VS2017或它第一次创建项目的方式。

    在启动全新项目(ASP核心2.2,Web API,启用HTTPS和停用DOCKER)时,使用相同的类是不存在的。

    推荐文章