我有以下代码(如果我保留警告,它可以编译和工作正常,我没有使用 global:: hack 对其进行测试(:
namespace NotifierService.Models {}
namespace NotifierService
{
using Models;
}
"使用模型"语句带有下划线,表示(在错误列表中,这只是一个警告级别问题(:
对命名空间"NotifierService.Models"使用指令应该是限定
的
所以我把它定性为:
using NotifierService.Models;
并得到以下错误级别问题:
类型名称"模型"在类型"通告程序服务"中不存在
附言我知道我可以使用以下方法"破解"它以删除警告/错误,但我试图了解它发生的原因/原因,因为这种效果是应用程序范围影响多个命名空间的。
using global::NotifierService.Models;
答:菲尔多给了我一个解决方案...有一个问题,因为在我的 Windows 服务中,基类使用与命名空间相同的名称,因此通过重命名所有命名空间,应用程序编译没有问题(一旦我完全限定了 using 语句。
但是,我刚刚意识到一个更简洁的解决方案(因为我更喜欢命名空间与项目具有相同的名称,因为它使将来的引用更具逻辑性/可维护性(:
保持命名空间不变,在我使用 NotifierService.Models 命名空间中的类的地方,我只需按如下方式引用它们:
List<Models.TaxiModel>
这允许我删除"使用模型"...不过,似乎仍然有点奇怪和"笨拙"。
我不完全知道为什么会发生这种情况,但是命名空间和其中的类具有相同的名称可能会导致一些问题。
可悲的是,我没有将项目保留在发生在我身上的地方,所以我无法重申我遇到的问题。我只知道这是一个问题,这是因为名字相同。
该项目的解决方案是重命名其中一个命名空间或类。如果我没记错的话,我们重命名了这个班级。