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

时间:2014-06-19 21:21:37

标签: c# .net

我想知道某人之前是否曾见过这种情况,或者对可能导致这种情况的人有任何建议。我有一个名为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

  4. 供参考,以下是我的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; }
        }
    }
    

1 个答案:

答案 0 :(得分:2)

嗯,我觉得这个很傻。简单地说,命名空间和类名是相同的。编译器认为我已经输入了命名空间目录的开头而不是类名。再次感谢您花时间帮助另一个指关节头。