为什么我不能为名称空间声明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();
我相信你会想知道一些注意事项:
如果我只是在一个类中输入
Dashboard
,然后尝试解决它,该选项不可用。我以前见过这个问题,如果有冲突的命名空间。在这种情况下,必须给出一个完全限定的名称。但这里的情况并非如此。没有冲突的命名空间
其他类在这个项目中解决得很好。事实上,这里有一个场景:从
IDashboardRepository
开始,这个问题存在,试图像我描述的那样声明Dashboard
。IDashboardRepository
在同一个项目中,但在不同的命名空间: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; }
}
}
嗯,我觉得自己在这件事上很愚蠢。简单地说,名称空间和类名是相同的。编译器认为我输入了名称空间目录的开头,而不是类名。再次感谢你花时间帮助另一个傻瓜。