繁体   English   中英

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

[英]Why can't I declare a using statement for a namespace, but can directly declare the namespace before the type?

我想知道是否有人以前见过这种情况,或者对可能导致这种情况的任何建议。 我有一个名为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开始,正如我所描述的,尝试声明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; }
    }
}

好吧,我对此感到非常愚蠢。 简而言之,名称空间和类名称相同。 编译器认为我已经输入了名称空间目录的开头,而不是类名。 再次感谢您抽出宝贵时间来帮助另一个转向节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM