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

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


Models 文件夹 包含两个实体,Auto 和 Airplane


namespace Mini.Models {

     public class Auto {

         // code and stuff

     }

}


namespace Mini.Models {

     public class Airplane {

         // code and stuff

     }

}

Services 文件夹包含单个服务类


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

   }

}

虽然不是一个主要的问题,但同一文件夹中的两个类的引用方式不同仍然很烦人,我不知道为什么。


任何意见,将不胜感激。


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


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


30秒到达战场
浏览 170回答 3
3回答

当年话下

根据您提供的错误消息: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命名空间中看到一个名为的类Auto和一个名为Auto(namespace MyApp.Auto或者简单地namespace Auto)的命名空间,所以 C# 不确定您想要哪个。因此,它迫使您在选择其中一个时具体化。最简单的解决方案是将MyApp.Auto命名空间更改为其他名称。

森林海

问题似乎与 VS2017 或它第一次创建项目的方式有关。在启动全新项目(ASP Core 2.2,Web API,启用 https 并禁用 docker)并使用相同的类时,问题不存在。

明月笑刀无情

这不是解决方法,而是用正确的代码示例(以及原因)进行解释。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”命名空间的代码中,这是沙发问题。我测试了 VS 2015 有同样的问题。也许我们必须向 VS 团队报告,或者这是设计使然。
打开App,查看更多内容
随时随地看视频慕课网APP