为什么我不能为名称空间声明using语句,而可以在类型之前直接声明名称空间?

本文关键字:空间 声明 类型 不能 using 语句 为什么 | 更新日期: 2023-09-27 18:09:31

我想知道是否有人以前见过这种情况或有任何建议可能导致它。我有一个名为Dashboard的自定义类,它存在于一个名为Dashboard.Data.Client的项目中。在同一个项目中,如果我尝试引用类的名称空间,例如:

using Alliance.Dashboard.Data.Client.Models;

则不能使用类型Dashboard。但是,在任何需要使用Dashboard的地方,我都可以键入完全限定的名称,并且它工作得很好。例子:

Alliance.Dashboard.Data.Client.Models.Dashboard myDashboard = new Alliance.Dashboard.Data.Client.Models.Dashboard();

我相信你会想知道一些注意事项:

  1. 如果我只是在一个类中输入Dashboard,然后尝试解决它,该选项不可用。

  2. 我以前见过这个问题,如果有冲突的命名空间。在这种情况下,必须给出一个完全限定的名称。但这里的情况并非如此。没有冲突的命名空间

  3. 其他类在这个项目中解决得很好。事实上,这里有一个场景:从IDashboardRepository开始,这个问题存在,试图像我描述的那样声明DashboardIDashboardRepository在同一个项目中,但在不同的命名空间:Alliance.Dashboard.Data.Client.Interfaces。然而,反过来也可以。换句话说,我可以将接口名称空间用作Dashboard内的using语句,但不能在没有完全限定名称的接口内使用Dashboard

作为参考,这里是我的Dashboard类的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Alliance.Dashboard.Data.Client.Models
{
    public class Dashboard
    {
        public System.Guid DashboardID { get; set; }
        public string DashboardName { get; set; }
        public byte[] Instance { get; set; }
        public bool IsDeleted { get; set; }
        public byte[] Concurrency { get; set; }
    }
}

为什么我不能为名称空间声明using语句,而可以在类型之前直接声明名称空间?

嗯,我觉得自己在这件事上很愚蠢。简单地说,名称空间和类名是相同的。编译器认为我输入了名称空间目录的开头,而不是类名。再次感谢你花时间帮助另一个傻瓜。