C# 为什么可以';我是否为名称空间声明了using语句,但可以在类型之前直接声明名称空间?
我想知道是否有人以前见过这种情况,或者对造成这种情况的原因有什么建议。我有一个名为C# 为什么可以';我是否为名称空间声明了using语句,但可以在类型之前直接声明名称空间?,c#,.net,C#,.net,我想知道是否有人以前见过这种情况,或者对造成这种情况的原因有什么建议。我有一个名为Dashboard的自定义类,它存在于名为Dashboard.Data.Client的项目中。在同一个项目中,如果我尝试引用类的命名空间,例如: using Alliance.Dashboard.Data.Client.Models; 然后我无法使用类型仪表板。但是,只要我需要使用仪表板,我就可以键入完全限定的名称,而且效果很好。例如: Alliance.Dashboard.Data.Client.Models.
Dashboard
的自定义类,它存在于名为Dashboard.Data.Client
的项目中。在同一个项目中,如果我尝试引用类的命名空间,例如:
using Alliance.Dashboard.Data.Client.Models;
然后我无法使用类型仪表板。但是,只要我需要使用仪表板
,我就可以键入完全限定的名称,而且效果很好。例如:
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
以下是我的仪表板
类的代码,以供参考:
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; }
}
}
我觉得这件事很愚蠢。简单地说,名称空间和类名是相同的。编译器认为我输入的是名称空间目录的开头,而不是类名。再次感谢你花时间帮助另一个笨蛋 嗯,我觉得这件事很愚蠢。简单地说,名称空间和类名是相同的。编译器认为我输入的是名称空间目录的开头,而不是类名。再次感谢你花时间帮助另一个笨蛋 嗯,我觉得这件事很愚蠢。简单地说,名称空间和类名是相同的。编译器认为我输入的是名称空间目录的开头,而不是类名。再次感谢你花时间帮助另一个笨蛋 嗯,我觉得这件事很愚蠢。简单地说,名称空间和类名是相同的。编译器认为我输入的是名称空间目录的开头,而不是类名。再次感谢你花时间帮助另一个笨蛋 “那么我不能使用类型Dashboard”--当您尝试时收到的编译器错误是什么?更重要的是,您能给出一个简短的可重复的示例吗?在您当前的名称空间或其他使用导入的名称空间中,是否有另一个类或任何称为Dashboard
?如果不明确,则必须明确声明要使用哪一个。唯一的解决方法是在使用中为这些复制品添加别名。参见:天哪。我怎么会错过呢?我要从一座奇怪的桥上跳下来。你可以用过去式认真地谈论我。你们这些家伙马上就带我去了。问题是类名和项目名是相同的。编译器认为我已经开始键入名称空间的开头,而不是类名。我是个变态的白痴。很抱歉打扰您。“那么我不能使用类型仪表板”--您尝试时收到的编译器错误是什么?更重要的是,您能提供一个简短的可复制示例吗?您当前的命名空间或其他使用导入的命名空间中是否有另一个类或任何称为Dashboard
?如果不明确,则必须明确声明要使用哪一个。唯一的解决方法是在使用中为这些复制品添加别名。参见:天哪。我怎么会错过呢?我要从一座奇怪的桥上跳下来。你可以用过去式认真地谈论我。你们这些家伙马上就带我去了。问题是类名和项目名是相同的。编译器认为我已经开始键入名称空间的开头,而不是类名。我是个变态的白痴。很抱歉打扰您。“那么我不能使用类型仪表板”--您尝试时收到的编译器错误是什么?更重要的是,您能提供一个简短的可复制示例吗?您当前的命名空间或其他使用导入的命名空间中是否有另一个类或任何称为Dashboard
?如果不明确,则必须明确声明要使用哪一个。唯一的解决方法是在使用中为这些复制品添加别名。参见:天哪。我怎么会错过呢?我要从一座奇怪的桥上跳下来。你可以用过去式认真地谈论我。你们这些家伙马上就带我去了。问题是类名和项目名是相同的。编译器认为我已经开始键入名称空间的开头,而不是类名。我是个变态的白痴。很抱歉打扰您。“那么我不能使用类型仪表板”--您尝试时收到的编译器错误是什么?更重要的是,您能提供一个简短的可复制示例吗?您当前的命名空间或其他使用导入的命名空间中是否有另一个类或任何称为Dashboard
?如果不明确,则必须明确声明要使用哪一个。唯一的解决方法是在使用中为这些复制品添加别名。参见:天哪。我怎么会错过呢?我要从一座奇怪的桥上跳下来。你可以用过去式认真地谈论我。你们这些家伙马上就带我去了。问题是类名和项目名是相同的。编译器认为我已经开始键入名称空间的开头,而不是类名。我是个变态的白痴。对不起打扰了。