为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
30秒到达战场 2022-10-23 15:34:13
我在我的小项目中注意到,在导入类时,有些使用完整的文件夹引用,而有些则不使用。这是我正在研究的 Mini 项目的代码。Models 文件夹 包含两个实体,Auto 和 Airplanenamespace 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)
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

根据您提供的错误消息:


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命名空间更改为其他名称。


查看完整回答
反对 回复 2022-10-23
?
森林海

TA贡献2011条经验 获得超2个赞

问题似乎与 VS2017 或它第一次创建项目的方式有关。

在启动全新项目(ASP Core 2.2,Web API,启用 https 并禁用 docker)并使用相同的类时,问题不存在。


查看完整回答
反对 回复 2022-10-23
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这不是解决方法,而是用正确的代码示例(以及原因)进行解释。


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 团队报告,或者这是设计使然。


查看完整回答
反对 回复 2022-10-23
  • 3 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信